写点什么

【Docker 那些事儿】初始 Kubernetes 容器管理平台(下)

  • 2022 年 7 月 21 日
  • 本文字数:2306 字

    阅读完需:约 8 分钟

【Docker 那些事儿】初始 Kubernetes 容器管理平台(下)

1. Kubernetes 体系结构

🍑 集群体系结构

Kubernetes 集群主要由控制节点 Master(部署高可用需要两个以上)和多个工作节点 Node 组成,两种节点上分别运行着不同的组件来维持集群高效稳定的运转,另外还需要集群状态存储系统(etcd)来提供数据存储服务。


Kubernetes 集群中各节点和 Pod 的对应关系如图所示👇



Kubernetes 的系统架构中,Master 节点上主要运行着 API Server、Controller ManagerScheduler 组件,而每个 Node 节点上主要运行着 KubeletKubernetes Proxy容器引擎


除此之外,完整的集群服务还依赖一些附加的组件,如 kubeDNSHeapsterIngress Controller 等。

🍑 Master 节点与相关组件

控制节点 Master 是整个集群的网络中枢,主要负责组件或者服务进程的管理和控制,例如,追踪其它服务器健康状态、保持各组件之间的通信、为用户或者服务提供 API 接口。


Master 中的组件可以在集群中的任何计算机上运行。


但是,为简单起见,设置时通常会在一台计算机上部署和启动所有主组件,并且不在此计算机上运行用户容器。


在控制节点 Master 中所部署的组件包括以下三种。

🍇 API Server

API Server 是整个集群的网关,作为 Kubernetes 系统的入口,其内部封装了核心对象的 "增、删、改、查" 操作,以 REST API 方式供外部客户和内部组件调用,就像是机场的 "联络室"

🍇 Scheduler 调度器

该组件监视新创建且未分配工作节点的 Pod,并根据不同的需求将其分配到工作节点中。


同时负责集群的资源调度、组件抽离。

🍇 Controller Manager 控制器管理器

Controller Manager 是所有资源对象的自动化控制中心,大多数对集群的操作都是由几个被称为控制器的进程执行的,这些进程被集成于 kube-controller-manager 守护进程中。实现的主要功能如下:


(1)生命周期功能:Namespace 创建,EventPodNode级联垃圾 的回收。


(2)API 业务逻辑功能:ReplicaSet 执行的 Pod 扩展等。


Kubernetes 主要控制器功能如表所示。



另外 Kubernetes1.16 版本还加入了云控制器管理组件,用来与云提供商交互。

🍑 Node 节点与相关组件

Node 节点是集群中的工作节点(在早期的版本中也被称为 Minion),主要负责接收 Master 的工作指令并执行相应的任务。


当某个 Node 节点宕机时,Master 节点会将负载切换到其它的工作节点上,Node 节点与 Master 节点的关系如图所示👇



Node 节点上所部署的组件包括以下三种。

🍇 Kubelet

Kubelet 组件主要负责管控容器,它会从 API Server 接收 Pod 的创建请求,然后进行相关的启动和停止容器操作。同时,Kubelet 监控容器的运行状态并 "汇报"API Server

🍇 Kubernetes Proxy

Kubernetes Proxy 组件负责为 Pod 创建代理服务,从 API Server 获取所有的 Service 信息,并创建相关的代理服务,实现 ServicePod 的请求路由和转发。


Kubernetes ProxyKubernetes 层级的虚拟转发网络中扮演着重要的角色。

🍇 Docker Engine

Docker Engine 主要负责本机的容器创建和管理工作。

🍑 集群状态存储组件

Kubernetes 集群中所有的状态信息都存储于 etcd 数据库中。


etcd 以高度一致的分布式键值存储,在集群中是独立的服务组件,可以实现集群发现、共享配置以及一致性保障(如数据库主节点选择、分布式锁)等功能。


在生产环境中,建议以集群的方式运行 etcd 并保证其可用性。etcd 不仅可提供键值存储,还可以提供监听(Watch)机制。


键值发生改变时 etcd 会通知 AIP Server,并由其通过 Watch API 向客户端输出用户可以访问 Kubernetes 官方网站查看更多的 etcd 说明。

🍑 其他组件

Kubernetes 集群还支持 DNSWeb UI 等插件,用于提供更完善的集群功能,这些插件的命名空间资源属于命名空间 kube-system,下面列出了常用的插件及其主要功能。

🍇 DNS

DNSDomain Name System,域名系统)插件用于集群中的主机名、IP 地址的解析。

🍇 Web UI

Web UI(用户界面)是提供可视界面的插件,允许用户通过界面来管理集群中运行的应用程序。

🍇 Container Resource Monitoring

Container Resource Monitoring(容器资源监视器)用于容器中的资源监视,并在数据库中记录这些资源分配。

🍇 Cluster-level Logging

Cluster level Logging(集群级日志)是用于集群中日志记录的插件,负责保存容器日志与搜索存储的中央日志信息。

🍇 Ingress Controller

Ingress Controller 可以定义路由规则并在应用层实现 HTTP(S)负载均衡机制。

2. 深入理解 Kubernetes

Kubernetes 在容器层面而非硬件层面运行,因此它不仅提供了 PaaS 产品的部署、扩展、负载平衡、日志记录和监控功能,还提供了构建开发人员平台的构建块,在重要的地方保留了用户选择灵活性。


Kubernetes 的其它特征如下所示。


(1)Kubernetes 支持各种各样的工作负载,包括无状态、有状态和数据处理的工作负载。如果应用程序可以在容器中运行,那么它也可以在 Kubernetes 上运行。


(2)不支持部署源代码和构建的应用程序,其持续集成、交付和部署工作流程由企业自行部署。


(3)Kubernetes 只是一个平台,它不提供应用程序级服务,包括中间件(如消息总线)、数据处理框架(如 Spark)、数据库(如 MySQL)、高速缓存、集群存储系统(如 Ceph)等。


(4)Kubernetes 不提供或授权配置语言(如 jsonnet),只提供了一个声明性的 API,用户可以通过任意形式的声明性规范来实现所需要的功能。

3. 总结

本篇文章介绍了容器编排工具 Kubernetes 的发展历史、使用优势,同时对部署 Kubernetes 集群的一些核心概念和网络进行了讲解。


大家应该深入理解集群中 Master 节点、Node 节点上运行的核心组件,以及这些组件实现的功能和相互关系,了解 Pod 中各个容器的通信方式和工作原理。


下一篇文章节将介绍 Kubernetes 的安装和基本配置。

发布于: 刚刚阅读数: 4
用户头像

🏅️ InfoQ 专家博主 2022.03.08 加入

CSDN:飞向星的客机

评论

发布
暂无评论
【Docker 那些事儿】初始 Kubernetes 容器管理平台(下)_Docker_飞向星的客机_InfoQ写作社区