Kubernetes 集群架构

Kubernetes 控制平面、节点组件、访问链路和生产集群基线说明。

Kubernetes 集群架构

Kubernetes 集群由控制平面和工作节点组成。控制平面保存和协调集群期望状态,工作节点负责运行 Pod。所有资源变更都通过 API Server 进入,再由控制器、调度器、kubelet 等组件逐步完成。

Kubernetes 集群架构

核心组件

组件位置作用
API Server控制平面Kubernetes API 入口,负责认证、鉴权、准入和对象读写
etcd控制平面保存集群状态和资源对象
Scheduler控制平面为未调度 Pod 选择合适节点
Controller Manager控制平面运行控制器,让实际状态接近期望状态
kubelet工作节点管理本节点 Pod 生命周期
containerd工作节点容器运行时,负责镜像和容器
kube-proxy工作节点维护 Service 访问规则
CNI工作节点提供 Pod 网络能力

访问链路

用户、CI/CD、GitOps 控制器通常都访问 API Server:

kubectl / controller -> API Server -> etcd

创建 Deployment 后的典型链路:

  1. API Server 写入 Deployment 对象。
  2. Deployment Controller 创建 ReplicaSet。
  3. ReplicaSet Controller 创建 Pod。
  4. Scheduler 为 Pod 选择节点。
  5. kubelet 在目标节点拉取镜像并启动容器。
  6. kube-proxy / CNI 维护服务访问和 Pod 网络。

控制平面高可用

生产集群建议至少 3 个控制平面节点:

load balancer
  ├── apiserver-1
  ├── apiserver-2
  └── apiserver-3

etcd
  ├── member-1
  ├── member-2
  └── member-3

注意事项:

  • etcd 建议奇数成员,常见为 3 或 5。
  • API Server 前需要稳定的负载均衡地址。
  • 控制平面节点需要低延迟、稳定磁盘和可靠时间同步。
  • etcd 需要定期备份,并演练恢复流程。

Worker 节点基线

每个节点至少需要确认:

systemctl status kubelet
systemctl status containerd
crictl info
kubectl get node <node-name> -o wide
kubectl describe node <node-name>

重点关注:

  • kubelet 是否 Ready。
  • containerd 是否正常。
  • CNI Pod 是否运行。
  • 节点资源是否有 MemoryPressureDiskPressurePIDPressure
  • 节点标签、污点和角色是否符合规划。

生产基线

项目建议
版本管理固定 Kubernetes 次版本,升级前确认组件兼容
容器运行时使用 containerd,cgroup driver 和 kubelet 保持一致
网络明确 Pod CIDR、Service CIDR、CNI 插件和 NetworkPolicy 能力
权限默认最小权限,禁止业务长期使用 cluster-admin
日志保留 kubelet、containerd、控制面组件和应用日志
监控监控节点、Pod、API Server、etcd、CoreDNS、CNI
备份定期备份 etcd、关键 YAML、Helm values 和证书

常见架构问题

问题排查方向
API Server 慢查看控制面负载、审计日志、etcd 延迟和请求量
节点 NotReady检查 kubelet、containerd、CNI、磁盘和网络
Pod 无法调度检查 Scheduler 事件、资源、污点、亲和性和 PVC
Service 不通检查 EndpointSlice、kube-proxy、CNI 和 NetworkPolicy
DNS 异常检查 CoreDNS、kube-dns Service、上游 DNS 和节点网络