03. 集群组件
Kubernetes 集群组件

Master Components
-
etcd:是高可用的
key/value 存储系统,用于持久化存储集群中的所有资源对象,比如:Node,Pod,Serivce,RC,namespace 等。API server 提供了操作etcd 的封装接口API ,以Rest 的方式提供,这些API 基本上都是集群中资源对象的增删改查及监听资源变化的接口,比如创建Pod 、RC,监听Pod 的变化等接口。API server 是连接其他所有服务组件的中间枢纽。 -
kube-apiserver:提供了资源对象的唯一操作入口,其他组件都必须通过它提供的
API 来操作资源数据,通过对相关的资源数据全量查询与变化监听,这些组件可以近乎实时地完成相关的业务功能。比如提交一个新的Pod 到kube-apiserve 中,kube-controller-manger 可以立即就发现并开始作用。它还有一套完备的安全机制,包括认证、授权及准入控制等相关模块。 -
kube-controller-manger:集群内部的管理控制中心,主要完成了集群的故障检测和恢复的自动化工作。比如对
RC 定义的Pod 进行维护;根据Service 和Pod 的关系,完成服务的Endpoints 对象的创建和更新;还有Node 的发现、管理和状态监控,死亡容器所占资源及本地缓存的镜像文件的清理等工作。 -
kube-scheduler: 集群的调度器,负责Pod 在集群节点中的调度分配,也负责Volume (CVI)和网络(CNI)的管理,按照预定的调度策略将Pod 调度到相应的机器上;
Node Components
-
kubelet:负责本地节点上
Pod 的创建、修改、监控、删除等生命周期管理,同时会上报本Node 的状态信息到API server 。 -
kube-proxy:实现
Service 的代理及软件模式的负载均衡器。 -
kubectl:集群内部的客户端可以直接使用
kubectl 命令管理集群;集群外的客户端需要使用kubectl Porxy 进行反向代理来访问API server 。 -
cAdvisor: 在Node 节点运行的kubectl 服务中内嵌了一个cAdvisor 服务,cAdvisor 是谷歌的开源项目,用于实时监控Docker 上运行的容器的性能指标。
组件通信
--kubelet-certificate-authority
开启(而
比如典型的创建

用户通过
使用的端口号

Master node(s)
Protocol | Direction | Port Range | Purpose |
---|---|---|---|
TCP | Inbound | 6443* |
Kubernetes API server |
TCP | Inbound | 8080 | Kubernetes API insecure server |
TCP | Inbound | 2379-2380 | etcd server client API |
TCP | Inbound | 10250 | Kubelet API |
TCP | Inbound | 10251 | kube-scheduler healthz |
TCP | Inbound | 10252 | kube-controller-manager healthz |
TCP | Inbound | 10253 | cloud-controller-manager healthz |
TCP | Inbound | 10255 | Read-only Kubelet API |
TCP | Inbound | 10256 | kube-proxy healthz |
Worker node(s)
Protocol | Direction | Port Range | Purpose |
---|---|---|---|
TCP | Inbound | 4194 | Kubelet cAdvisor |
TCP | Inbound | 10248 | Kubelet healthz |
TCP | Inbound | 10249 | kube-proxy metrics |
TCP | Inbound | 10250 | Kubelet API |
TCP | Inbound | 10255 | Read-only Kubelet API |
TCP | Inbound | 10256 | kube-proxy healthz |
TCP | Inbound | 30000-32767 | NodePort Services** |