Kubernetes概述

Kubernetes概述

  • Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S.
  • K8S用于容器化应用程序的部署,扩展和管理。
  • K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。
  • Kubernetes目标是让部署容器化应用简单高效。

资源管理器的诞生过程

**开始: **MESOS+zookeeper+marathon构建

  • 有了以上这些公有云之后,我们需要对其进行资源管理,那么此时就诞生了资源管理器:MESOS+zookeeper+marathon 构架

  • MESOS:Mesos是Apache旗下的开源分布式资源管理框架,它被称为是分布式系统的内核,后来在twitter得到广泛使用。

  • Twitter也是mesos的最大客户,但是大概在2019年5月份,Twitter 宣布不再使用MESOS,而改用 Kubernetes,至此,Mesos已经是慢慢的被淘汰了

在这里插入图片描述

**让后:**docker+swarm 容器群集管理

Docker+ Swarm,是一个非常轻量的群集管理工具,只有几十MB大小

  • Swarm 是 Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源。

  • 但是Swarm 和 Kubernetes 比较类似,因为更加轻,所以具有的功能也较 kubernetes 更少一些。

  • 大概在2019年7月份,阿里云宣布将Docker Swarm 从选择列表中剔除,这也意味着在不就得将来,Docker Swarm 也会像Mesos一样慢慢被淘汰掉

在这里插入图片描述

最后: Kubernetes,开源框架 二次开发

  • Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能
  • Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本
  • Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”,所以他的图标是这样的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KoWRqrI6-1601253269786)(C:\Users\19437\AppData\Roaming\Typora\typora-user-images\image-20200927224336358.png)]

Kubernetes特性

  • 自现修复
    在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量,杀死健康检查失败的容器,并且在未准备好之前不会处理客户瑞请求,确保线上服务不中断

  • 弹性伸缩
    使用命令、U或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性﹔业务低峰时回收资源,以最小成本运行服务

  • 自动部署和回滚
    K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务。

    蓝/绿部署:在进行蓝/绿部署时,应用程序的一个新副本(绿)将与现有版本(蓝)一起部署。应用程序的入口/路由器以切换到新版本(绿)更新,现有版本(蓝)会提供服务知到新版本(绿)更新完毕。

    金丝雀:金丝雀发布一般是先发1台机器,或者一个小比例,例如2%的服务器,主要做流量验证用,也称为金丝雀 (Canary) 测试,国内常称灰度测试。以前旷工下矿前,会先放一只金丝雀进去用于探测洞里是否有有毒气体,看金丝雀能否活下来,金丝雀发布由此得名。简单的金丝雀测试一般通过手工测试验证,复杂的金丝雀测试需要比较完善的监控基础设施配合,通过监控指标反馈,观察金丝雀的健康状况,作为后续发布或回退的依据。如果金丝测试通过,则把剩余的 V1 版本全部升级为 V2 版本。如果金丝雀测试失败,则直接回退金丝雀,发布失败。

  • 服务发现和稳载均衡
    K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负裁均衡关联的所有容器,使得用户无需考虑容器IP问题。

  • 机密和配置管理
    管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在KBS中,方便应用程序使用.

  • 存储编排
    挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如NFS、GlusterFS.Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。

  • 批处理
    是供一次性任务,定时任务:洞足批量数据处理和分析的场景。

kubernetes群集架构与组件图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J27E71bb-1601253269795)(C:\Users\19437\AppData\Roaming\Typora\typora-user-images\image-20200927230711227.png)]

名词解释

master节点名词解释

在这里插入图片描述

  • kubelet:

    • 在每个节点(node)上都要运行一个 worker 对容器进行生命周期的管理
    • kubelet的主要功能就是定时从某个地方获取节点上 pod/container 的期望状态
    • kubelet 还有一个重要的责任,就是监控所在节点的资源使用情况,并定时向 master 报告。
    • 知道整个集群所有节点的资源情况,对于 pod 的调度和正常运行至关重要
  • API Service:

    • 具备管理机制,任务分配机制,APIServer负责对外提供RESTful的Kubernetes API服务
    • 它是系统管理指令的统一入口
    • 任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd
  • Controller Manager:

    • 作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号 (ServiceAccount)、资源定额(ResourceQuota)的管理
    • 当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
    • 如果说APIServer做的是“前台”的工作的话,那controller manager就是负责“后台”的
    • 每个资源一般都对应有一个控制器,而controller manager就是负责管理这些控制器的。比如我们通过APIServer创建一个pod,当这个pod创建成功后,APIServer的任务就算完成了。而后面保证Pod的状态始终和我们预期的一样的重任就由controller manager去保证了
  • Scheduler:

    • scheduler的职责很明确,就是负责调度pod到合适的Node上。
    • 如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是Pod和一个Node的绑定,即将这个pod部署到这个Node上。
    • Kubernetes目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法
  • ETCD:

    • etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。

nodes工作节点解释

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C0peSQU2-1601253269799)(C:\Users\19437\AppData\Roaming\Typora\typora-user-images\image-20200927234522477.png)]

  • kubelet:

    • kubelet的主要功能就是定时从某个地方获取节点上 pod/container 的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态(就像代理服务组件,取代了master执行任务)。

    • 在每个节点(node)上都要运行一个 worker 对容器进行生命周期的管理,这个 worker 程序就是kubelet

    • kubelet 还要查看容器是否正常运行,如果容器运行出错,就要根据设置的重启策略进行处理。

    • kubelet 还有一个重要的责任,就是监控所在节点的资源使用情况,并定时向 master 报告。知道整个集群所有节点的资源情况,对于 pod 的调度和正常运行至关重要。

  • kube-proxy:

    • 每个节点(node)都有一个组件kube-proxy,实际上是为service服务的(接待客户请求)
    • 通过kube-proxy,实现流量从service到pod的转发,它负责TCP和UDP数据包的网络路由,kube-proxy也可以实现简单的负载均衡功能。其实就是管理service的访问入口
  • Node:

    • Node是Kubernetes中的工作节点,最开始被称为minion。
    • 一个Node可以是VM或物理机。每个Node(节点)具有运行pod的一些必要服务,并由Master组件进行管理,Node节点上的服务包括Docker、kubelet和kube-proxy。目前Kubernetes支持docker和rkt两种容器

    通过下边这个图可以更清晰的看出来node和pod的关系

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCBx75mj-1601253269802)(C:\Users\19437\AppData\Roaming\Typora\typora-user-images\image-20200927235747983.png)]

Kubernetes核心概念

pod

  • Pod是Kubernetes创建或部署的最小/最简单的基本单位

  • 一个Pod封装一个应用容器(也可以有多个容器)

  • 它可能由单个容器或多个容器共享组成的资源

  • pod是短暂的

pod和container关系

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mhPmJytS-1601253269800)(C:\Users\19437\AppData\Roaming\Typora\typora-user-images\image-20200927235628012.png)]
Controllers:

  • ReplicaSet :确保预期的Pod副本数量

  • Deployment:无状态应用部署

  • StatefulSet:有状态应用部署

  • DaemonSet :确保所有Node运行同一个Pod

  • Job :—次性任务

  • Cronjob:定时任务

  • 更高级层次对象,部署和管理Pod

Node Controller:

  • 负责发现、管理和监控集群中的各个Node节点。
  • ReplicaSet:确保预期的Pod副本数量
  • Deployment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DaemonSet:确保所有Node运行同一个Pod
  • Job:一次性任务
  • Cronjob:定时任务

servers:

  • 防止pod失恋

  • 定义一组pod的访问策略

Label: 标签,附加到某个资源上,用于关联对象,查询和筛选
Namespace:命名空间,
简单架构图片,将对象逻辑上隔离

Flannel容器集群网络部署

  • Overlay Networkr覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过遨拟链路连接起来。
  • VXLAN将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道点解封敬并将数据发送给目
    标地址。
  • Flannel:是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通倍,目前已经支持UDP、VXLAN、AWSVPC和CE路由等数据转发方
    式.

VXLAN图片解释
俩个docker要互通需要先封装一个逻辑地址,然后在封装一个物理地址
在这里插入图片描述
先封装flannel地址然后在封装一个物理地址
在这里插入图片描述
数据转发过程

在这里插入图片描述

K8S分层架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3no536G6-1601253269806)(C:\Users\19437\AppData\Roaming\Typora\typora-user-images\image-20200928001911757.png)]

分层介绍

  • 核心层:是Kubernetes最核心的层面,对外提供API构建高层的应用,对内提供插件式应用执行环境;
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等);
  • 管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等);
  • 接口层:kubectl命令行工具、客户端SDK以及集群联邦;
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴:
    • Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等;
    • Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等;

K8S和容器生态系统结构

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页