先把三个最基础的层级吃透。
Kubernetes 集群(Cluster)
├── 控制平面(指挥部)
│ ├── API Server
│ ├── Scheduler
│ ├── Controller Manager
│ └── etcd
└── 工作节点(Nodes)
├── Node A
│ ├── Pod 1
│ └── Pod 2
└── Node B
├── Pod 3
└── Pod 4Cluster:整支舰队。
Node:一艘真正跑任务的母舰,可以是物理机,也可以是虚拟机。
Pod:Kubernetes 里最小的可部署计算单元,不是容器本身,而是容器的运行舱室。
可以这样记:
- 容器像船员
- Pod 像任务舱
- Node 像母舰
- Cluster 像整支舰队
一个 Pod 里通常放一个主容器;也可以放多个强耦合容器,它们共享网络和存储。
Pod
├── Container A(主业务)
└── Container B(辅助 sidecar / agent)Pod 的关键特征:
- 同一个 Pod 内的容器共享网络命名空间,可以用
localhost互相访问 - 同一个 Pod 内的容器可以共享卷
- Pod 是短暂的、可替换的
- Kubernetes 管的是 Pod,不直接管单个容器
这就是为什么很多新手第一反应会错:
“我不是在管 Docker 容器吗?”
不完全是。
Kubernetes 的基本作战单位是 Pod。
一个最简单的 Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.27
ports:
- containerPort: 80创建它:
kubectl apply -f pod.yaml
kubectl get pods -o wide但这里先记一句最重要的话:
生产里你通常不直接创建 Pod,而是让更高层对象去管它。