1. 集群的完整定义
一个 Kubernetes 集群由两部分核心组成:
| 组成部分 | 功能 | 类比 |
|---|---|---|
| 控制平面(Control Plane) | 集群的“大脑”,负责调度、监控和维持集群状态(如 kube-apiserver、etcd)。 | 公司的管理层 |
| 工作节点(Worker Nodes) | 实际运行容器化应用的机器(如虚拟机、物理服务器)。 | 公司的执行员工 |
2. 集群的“健全性”体现在哪里?
(1) 机器层面
• 节点互联:所有机器(控制平面和工作节点)需满足: • 网络互通(通常要求 6443、10250 等端口开放)。 • 资源充足(CPU/内存满足组件运行需求)。
(2) 系统层面
• 必需组件: • 控制平面:kube-apiserver(API 入口)、etcd(数据库)、kube-scheduler(调度器)、kube-controller-manager(控制器)。 • 工作节点:kubelet(节点代理)、kube-proxy(网络代理)、容器运行时(如 containerd)。
(3) 功能完整性
• 集群必须能完成核心功能: • 调度 Pod 到节点。 • 提供 Service 负载均衡。 • 支持存储卷挂载。 • 允许通过 kubectl/API 管理资源。
3. 集群 vs 单台机器的本质区别
即使所有组件运行在一台机器上(如 Docker Desktop 的单节点集群),它仍然是集群,因为: • 逻辑分层:控制平面和工作节点角色分离。 • 扩展性:随时可添加新节点(横向扩展)。 • 高可用:生产环境中控制平面通常跨多节点部署(如 3 个 etcd 实例)。
4. 实际案例说明
(1) 本地开发集群(如 Docker Desktop)
• 机器:1 台本地电脑(Mac/Windows)。 • 系统组件: • 控制平面和工作节点共用同一台机器。 • 包含所有必要的 Kubernetes 进程(kube-apiserver、etcd、kubelet 等)。 • 本质:单节点集群,仍具备完整集群功能。
(2) 生产集群(如 AWS EKS)
• 机器:多台 EC2 实例(3 个控制平面节点 + 10 个工作节点)。 • 系统组件: • 控制平面由 AWS 托管(用户不可见)。 • 工作节点运行用户 Pod。 • 本质:分布式高可用集群。
5. 常见误解澄清
| 误解 | 正解 |
|---|---|
| “集群就是一堆 Docker 主机” | 集群需要 Kubernetes 系统组件,而不仅是容器运行时。 |
| “单机不能叫集群” | 只要包含控制平面和工作节点逻辑划分,单机也是集群(如 Minikube)。 |
| “集群等于 Pod/Deployment 集合” | 集群是底层基础设施,Pod/Deployment 是运行在其上的工作负载。 |
6. 如何验证集群健全性?
# 检查节点状态
kubectl get nodes -o wide
# 检查核心组件状态
kubectl get pods -n kube-system
# 测试集群功能
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80
curl http://$(kubectl get svc nginx -o jsonpath='{.spec.clusterIP}')总结
• 集群 = 机器 + Kubernetes 系统组件:
既需要硬件资源(节点),也需要软件组件(kube-apiserver、etcd 等)协同工作。
• 最小集群:可以是单台机器(如 Docker Desktop),但需包含控制平面和工作节点逻辑。
• 生产集群:通常是多节点、高可用的分布式系统。
如果您的场景是“一组机器安装了 Kubernetes 组件并成功交互”,那么这就是一个健全的集群!