Kubernetes核心组件
Kubernetes核心组件
一个Kubernetes集群由控制节点Master,服务节点Node以及存储节点etcd组成。
1. Master节点
Master节点主要负责响应client的Restful API请求,整个集群状态的管理,以及读写etcd。Master节点主要运行以下进程:kube-apiserver,kube-scheduler和kube-controller-manager。
1.1 kube-apiserver
- kube-apiserver向client提供集群管理的 REST API 接口。
- 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)。
1.2 kube-scheduler
kube-scheduler 负责分配调度 Pod 到集群内的节点上。它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点(更新 Pod 的 NodeName 字段)
1.3 kube-controller-manager
kube-controller-manager 由一系列的控制器组成,包括Replication Controller,Job Controller,Deployment Controller,Daemon Controller等等。
kube-controller-manager 是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。
2. Node节点
在Kubernetes集群的服务节点上,主要运行以下进程:Doker,kubelet和kube-proxy。
2.1 kubelet
每个节点上都运行一个 kubelet 服务进程,默认监听 10250 端口,接收并执行 master 发来的指令,管理 Pod 及 Pod 中的容器。每个 kubelet 进程会在 API Server 上注册节点自身信息,定期向 master 节点汇报节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。
2.2 kube-proxy
每台机器上都运行一个 kube-proxy 服务,主要用于service的服务发现和负载均衡。它监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡(仅支持 TCP 和 UDP)。
kube-proxy 可以直接运行在物理机上,也可以以 static pod 或者 daemonset 的方式运行。
3. etcd
Etcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。
etcd在Kubernetes集群中主要用于存储元数据,包括Node/pod/service/deployment等元数据信息都存储在etcd中。