Kubernetes 架构及其组件作用
一、基本架构
- Kubernetes 被认为是云上的操作系统,可以运行在成百上千台服务器上,管理百万级别的服务。
- Kubernetes 采用的是
管理面/数据面
架构。管理面部分是Kubernetes作为一个云上操作系统的角色它的能力基础,云上服务正是通过管理面进行编排、调度、管理的。数据面是用户服务和数据所在的空间。 - 管理面的服务组件所在节点为Master节点,数据面服务部署的节点称为Worker节点。
二、管理面结构及其作用
管理面的Master 节点通常包含4个组件:
- apiServer: 外部系统访问 Kubernetes 集群统一的入口,即可通过 RESTful API 进行访问,同时还提供了校验、授权等功能。可以简单的认为是云上的大门保安;
- scheduler: 负责容器的编排工作。即检查Worker节点的资源状况,将部署的 Pod 安排到合适的Worker 节点上去;
- controller-manager: 负责监控和维护容器和节点的资源状况,达到故障检测、服务迁移、应用伸缩的目的;
- etcd: 高可用、分布式的 key-value 型数据库,用来存储、持久化集群中的API 资源对象及其状态;
可以通过以下命令获取管理面各组件Pod运行状态:
kubectl get pod -n kube-system
-n kube-system: 通过 -n 选项指定查询Pod的命名空间
三、数据面结构及其作用
数据面的 Worker 节点基本上有3个比较重要的组件,其他的都是可以按需要进行安装的插件:
- kubelet: 用来管理所在的节点。具体就是通过与管里面的 apiserver 通讯进行状态信息的上报、命令下发,例如启停容器等。裸机部署;
- kube-proxy: 节点上的网络代理。即负责给Worker节点上的各个Pod 转发
UDP/TCP
数据包。容器化部署; - container-runtime: 管理容器的组件。管理Pod 的生命周期。实现了CRI 的容器都可以被使用,裸机部署。