1. 控制平面:谁在帮你「盯着集群」?
简化理解:API Server 是唯一入口;etcd 存期望与状态;Scheduler 把 Pod 绑到节点;各节点上的 kubelet 真正拉起容器。 Controller Manager 里跑着一堆控制器(如 Deployment Controller),它们 watch API 中的对象,发现「期望副本数 ≠ 实际」就创建/删除 Pod。
2. Pod:最小调度单元,不是长期资产
一个 Pod 可含一个或多个容器(sidecar 模式),共享网络与存储卷。Pod IP 在集群内可达,但重启后 IP 会变,所以不要写死 Pod IP。 健康检查用 livenessProbe / readinessProbe:前者失败会重启容器,后者失败会把 Pod 从 Service 端点摘除。
3. Deployment:管「多少份」与「怎么升级」
Deployment 不直接等价于 Pod,它管理 ReplicaSet,由 RS 保证副本数。滚动更新(rolling update)通过逐步替换 Pod 实现,可配 maxSurge / maxUnavailable。 回滚 kubectl rollout undo 本质是回到上一版 ReplicaSet 模板。
4. Service:给一群 Pod 一个稳定名字
ClusterIP(默认):集群内虚拟 IP,DNS 名为 <svc>.<ns>.svc.cluster.local。 NodePort:在每个节点开端口(调试/小规模)。LoadBalancer:云厂商分配外部 LB。 Service 通过 label selector 关联 Pod,Endpoints 列表随 Pod 变化自动更新。
5. Ingress:集群对外的 HTTP(S) 入口
Service 解决「集群内稳定访问」;要从公网按域名/路径进来,通常加 Ingress + Ingress Controller(如 nginx、traefik)。 Ingress 描述规则:host、path → backend Service:port。TLS 证书可挂在 Ingress 或网关层。
6. 最小实践清单
- 用 kubectl apply -f 管理 Deployment/Service/Ingress,习惯「声明式」思维。
- Pod template 的 labels 与 Service selector 必须一致。
- 生产路径:readiness 必配;资源 requests/limits 下一章细讲。
- 排查顺序:Pod 事件 → Service endpoints → Ingress backend。