image.png

1.控制平面 Control Plane Components

控制平面的组件对集群做出全局决策(资源调度),以及检测和相应集群事件。
控制平面可以在集群中的任何节点上运行。

1.1 kube-apiserver

API 服务器是Kubernetes 控制面的组件,API 服务器是Kubernetes 控制面的前端。
Kube-apiserver 设计上考虑了水平伸缩,它可通过部署多个实例进行伸缩,实例之间平衡流量。

1.2 etcd

etcd是兼具一致性和高可用性的键值数据库,可以作为保存Kubernetes所有集群数据的后台数据库。

1.3 kube-scheduler

控制平面组件,负责监视新创建的,未指定运行节点的Pods,选择节点让Pod在上面运行。
调度决策考虑的因素包括单个Pod 和 Pod集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时间限制。

1.4 kube-controller-manager

在节点上运行控制的器组件。

  • 控制器
    • 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应。
    • 任务控制器(Job controller):监控代表一次性任务的job对象,然后创建Pods来运行这些任务至完成。
    • 端点控制器(Endpoints Controller)填充端点(Endpoints)对象(及 加入 Service 与 Pod)
    • 服务账户和令牌控制器(Service Account & Token Controller):为新的命名空间创建默认账户和API访问令牌。

      1.5 cloud-controller-manager

      云控制器管理器是指嵌入特定云控制器逻辑的控制平面组件。
      云控制器管理器允许你连接集群到云提供商的应用编程接口中,并把和该云平台交互的组件与只和你的集群交互的组件分离开。

      2.Node组件

      节点组件在每个节点上运行,维护运行的pod并提供Kubernetes运行环境。

      2.1 kubelet

      一个在集群中每个节点(node)上运行的代理,它保证容器都运行在pod中。
      kubelet 接收一组通过各类机制提供给他的PodSpacs,确保这些PodSpacs中描述的容器处于运行状态。

      2.2 kube-proxy

      集群中每个节点上运行的网络代理,实现kubernetes服务概念的一部分。
      维护节点上的网络规则,这些网络规则允许从集群内部或外部的网络会话与pod进行网络通信。

      3.Namespace

      用来对集群资源进行隔离和划分,默认只进行资源隔离,不隔离网络。

      4.Pod

      运行中的一组容器,Pod是kubernetes中应用最小单位。
      允许一个pod运行多个容器
      image.png