中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

架构

Kubernetes+Docker方案用于容器云场景。

Linux container技术是通过与主机共用内核,结合内核的cgroup和namespace实现的一种虚拟化技术,极大的减少了对主机资源的占用且具有较快的启动速度。Docker就是一个Linux container引擎技术,实现应用的打包、快速部署等。Docker通过Linux Container技术将App变成一个标准化的、可移植的、自管理的组件,实现了应用的build once,run everywhere。Docker技术特点是:应用快速发布、应用部署和扩容简单、更高的应用密度、应用管理更简单。

Kubernetes将Docker容器宿主机组成集群,统一进行资源调度,自动管理容器生命周期,提供跨节点服务发现和负载均衡;更好的支持微服务理念,划分、细分服务之间的边界,比如Label、Pod等概念的引入。

Kubernetes集群由Master和Node组成,其架构轻量,迁移方便,部署快捷,插件化,可扩展。架构图如图1所示。

图1 Kubernetes和Docker容器场景架构
表1 Kubernetes和Docker容器场景各类节点说明

名称

说明

Pod

Pod是能够创建、调度和管理的最小部署单元,是一组容器的集合,而不是单独的应用容器。Pod对应于合设在一起的一组应用,它们运行在一个共享的应用上下文中,同一个Pod里的容器共享同一个网络命名空间,IP地址及端口空间和卷。从生命周期来说,Pod是短暂的而不是长久的应用。Pod被调度到节点,保持在这个节点上直到被销毁。

API服务器

负责暴露Kubernetes API,不管是kubectl还是API调用来操作Kubernetes集群各种资源,都是通过kube-apiserver提供的接口进行操作的。

kube-控制器和管理器

负责整个Kubernetes的管理工作,保证集群中各种资源的状态处于期望状态,当监测到集群中某个资源状态不正常时,管理控制器会触发对应的调度操作,主要由以下几部分组成:

  • 节点控制器(Node Controller)
  • 副本控制器(Replication Controller)
  • 端点控制器(Endpoints Controller)
  • 命名空间控制器(Namespace Controller)
  • 身份认证控制器(Service Accounts Controller)

调度器

负责Kubernetes集群的具体调度工作,接收来自于管理控制器(kube-controller-manager)触发的调度操作请求,然后根据请求规格、调度约束、整体资源情况等因素进行调度计算,最后将任务发送到目标节点的kubelet组件执行。

etcd

etcd是一款用于共享配置和服务发现的高效KV存储系统,具有分布式、强一致性等特点。etcd用于存储Kubernetes所有需要持久化的数据。

kubelet

kubelet是Node节点上最重要的核心组件,负责Kubernetes集群具体的计算任务,具体功能包括:

  • 监测Scheduler组件的任务分配。
  • 挂载Pod所需Volume。
  • 下载Pod所需Secrets。
  • 通过与docker daemon的交互运行docker容器。
  • 定期执行容器健康检查。
  • 监测、报告Pod状态到kube-controller-manager组件。
  • 监测、报告Node状态到kube-controller-manager组件。

Kube-proxy

kube-proxy主要负责Service到Pod实例的请求转发及负载均衡的规则管理。