英文原文:https://kubernetes.io/docs/concepts/overview/components/
Master组件
Master组件是集群的控制面板(control plane)。Master组件为集群做出全局指令(如调度),并检测和响应集群事件(如当replication控制器发现replicas数量不满足时,就会启动一个新的pod)。
Master组件可以运行在集群中的任意一个节点上。但是,简单起见,启动脚本通常会在同一个机器上启动所有master组件,并且不在该机器上运行用户的容器。可以参考Building High-Availability Clusters来看一个multi-master-VM的设置方式。
kube-apiserver
kube-apiserver是Master中暴露Kubernetes API的组件,相当于Kubernetes控制面板的前端。
它被设计成可水平伸缩的---通过部署多个实例。参考Building High-Availability Clusters。
etcd
持久化、高可用的键值对存储系统,用来存储所有节点数据。
时刻为你的Kubernetes集群的etcd数据做备份!关于etcd的更深入的内容,见etcd documentation。
kube-scheduler
负责监控新创建还没有分配到节点的pod,并选择一个结点来运行该pod。
调度策略包括资源需求、硬件/软件/规则限定、affinity and anti-affinity specifications, data locality, inter-workload interference and deadlines。
kube-controller-manager
负责运行控制器(controllers)。
从逻辑上来讲,每一个controller是一独立的进程,但为了减少复杂性,它们都被编译在同一个二进制包并运行在同一个进程中。
这些controllers包括:
- Node Controller:负责监听和响应节点宕机。
- Replication Controller:负责为系统中的每一个replication controller objedct保持正确的pod数量。
- Endpoints Controller:填充Endpoints对象,如joins Services & Pods。
- Service Account & Token Controllers:为新的命名空间创建默认的账户和API接入tokens。
cloud-controller-manager
cloud-controller-managerruns controllers that interact with the underlying cloud providers. The cloud-controller-manager binary is an alpha feature introduced in Kubernetes release 1.6.
cloud-controller-manager runs cloud-provider-specific controller loops only. You must disable these controller loops in the kube-controller-manager. You can disable the controller loops by setting the--cloud-provider
flag toexternal
when starting the kube-controller-manager.
cloud-controller-manager allows cloud vendors code and the Kubernetes core to evolve independent of each other. In prior releases, the core Kubernetes code was dependent upon cloud-provider-specific code for functionality. In future releases, code specific to cloud vendors should be maintained by the cloud vendor themselves, and linked to cloud-controller-manager while running Kubernetes.
The following controllers have cloud provider dependencies:
- Node Controller: For checking the cloud provider to determine if a node has been deleted in the cloud after it stops responding
- Route Controller: For setting up routes in the underlying cloud infrastructure
- Service Controller: For creating, updating and deleting cloud provider load balancers
- Volume Controller: For creating, attaching, and mounting volumes, and interacting with the cloud provider to orchestrate volumes
Node组件
Node组件运行在每一个节点上,维护运行的pods并提供Kubernetes运行时环境。
kubelet
运行在集群中每个节点上的agent,它负责保证容器在pod中的运行。
kubelet维护了多种机制提供的PodSpecs,它会保证PodSpecs中描述的容器正常健康地运行。kubelet不会管理那些不是由Kubernetes创建的容器。
kube-proxy
kube-proxy是Kubernetes中服务这个抽象概念的保证,它负责维护主机上的网络规则并执行连接转发(负责为Service提供cluster内部的服务发现和负载均衡)。
Container Runtime
容器运行时是一种负责运行容器的软件,Kubernetes目前支持两种运行时:Docker和rkt。