Deployment 与 ReplicaSet
用 Deployment 管理副本与滚动更新。
Deployment 是你日常最常用的控制器,它会创建并管理 ReplicaSet,确保副本数和版本更新都可控。
关键点
- ReplicaSet 负责“副本数量”
- Deployment 负责“版本更新”
- 回滚是 Deployment 的能力
示例 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: nginx:1.25
发布与回滚
kubectl rollout status deploy/api
kubectl rollout history deploy/api
kubectl rollout undo deploy/api
实操要点
- 先做快速盘点:
kubectl get nodes、kubectl get pods -A、kubectl get events -A。 - 对比“期望状态”和“实际状态”,
kubectl describe往往能解释漂移或失败原因。 - 名称、Label、Selector 要一致,避免 Service 或控制器找不到 Pod。
快速检查清单
- 资源定义与业务意图一致。
- Namespace、权限、镜像与环境匹配。
- 上线前具备健康探针与可观测日志。