Kubernetes架构与组件

K8s节点由主节点和工作负载节点两类节点组成。

主节点运行control panel,控制并管理整个系统。工作节点运行用户实际应用程序。

etcd 提供可靠的分布式数据存储服务,用于持久化存储K8s集群的配置和状态。kubernetes集群的主数据库,存储着所有资源对象以及状态。默认与Master组件部署在一个NODE上。ETCD的数据变更都是用过API Server进行。

K8s API server 用户程序(如kubectl)、K8s其它组件之间通信的接口。K8s其它组件之间不直接通信,而是通过API server通信的。这一点在上图的连接中可以体现,例如,只有API server连接了etcd,即其它组件更新K8s集群的状态时,只能通过API server读写etcd中的数据。集群控制的唯一入口,是提供Kubernetes集群控制RESTful API的核心组件。集群中各个组件之间数据交互和通信的中枢。提供集群控制的安全机制(身份认证、授权以及接入控制)

Scheduler 排程组件,为用户应用的每一可部署组件分配工作结点。通过API Server的Watch接口监听新建Pod副本信息,并通过调度算法为该POD选择一个最合适的Node。支持自定义的调度算法provider。默认调度算法内置预选策略和优选策略,决策考量资源需求、服务质量、软硬件约束、亲缘性、数据局部性等指标参数。

Controller Manager 执行集群级别的功能,如复制组件、追踪工作结点状态、处理结点失败等。Controller Manager组件是由多个控制器组成的,其中很多控制器是按K8s的资源类型划分的,如Replication Manager(管理ReplicationController 资源),ReplicaSet Controller,PersistentVolume controller。集群内各种资源controller的核心管理者。针对每一个具体的资源,都有相应的Controller。保证其下管理的每个controller所对应的资源始终处于“期望状态”。

Kubernetes集群由多个Node共同承载工作负载,POD被分配到某个具体的NODE上执行。

kube-proxy 在应用组件间负载均衡网络流量。Service抽象概念的实现,将到service的请求按策略(负载均衡)算法分发到后端POD(Endpoint)上,默认使用iptables mode实现。支持nodeport模式,实现从外部访问集群内的service。

Kubelet 管理工作结点上的容器。位于集群中每个node上的非容器形式的服务进程组件,Master和node之间的桥梁。处理Master下发到本Node上的Pod创建、启停等管理任务;向API Server注册Node信息。监控本地Node上容器和节点资源情况,并定期向Master汇报节点占用情况。

Container runtime Docker, rkt等实际运行容器的组件。

你可能感兴趣的:(Kubernetes架构与组件)