全书目录

第十一篇:Kubernetes 完全指南 —— 星际舰队宇宙

第四章:Deployment —— 你真正常用的“发兵令”

1 分钟 212 字 第 227 / 962 个阅读单元

如果说 Pod 是任务舱,那 Deployment 就是舰队编制令:

“给我始终保持 N 个同型号任务舱,并且以后换镜像时按规则滚动更新。”

关系大概是这样:

text
Deployment
   │
   ▼
ReplicaSet
   │
   ▼
Pods

日常心智可以直接记成:

  • Pod:单个任务舱
  • Deployment:管一批无状态任务舱

一个最常见的 Web Deployment:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: city-web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: city-web
  template:
    metadata:
      labels:
        app: city-web
    spec:
      containers:
        - name: web
          image: nginx:1.27
          ports:
            - containerPort: 80
          readinessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 3
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 10
            periodSeconds: 10

部署与查看:

bash
kubectl apply -f deployment.yaml
kubectl get deployment
kubectl get rs
kubectl get pods -l app=city-web
kubectl rollout status deployment/city-web

更新镜像:

bash
kubectl set image deployment/city-web web=nginx:1.28
kubectl rollout status deployment/city-web
kubectl rollout history deployment/city-web

为什么大家都喜欢 Deployment?

因为它帮你做了三件人肉最烦的事:

  • 保持副本数
  • 滚动更新
  • 回滚版本