k8s动手任务3:从零到滚动更新的Deployment 动手任务

3 阅读1分钟

1 目标

  1. 创建 Deployment
  2. 扩缩容
  3. 滚动更新 & 回滚
  4. 观察事件与 ReplicaSet 变化

2 yaml

文件:deploy-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: docker.io/library/nginx:latest
        imagePullPolicy: Never      # 关键:只用本地
        ports:
        - containerPort: 80

3 运行

kubectl apply -f deploy-nginx.yaml

4 验证 & 扩缩容

# 看 Deployment 状态
hw@host2:~/istack$ kubectl get deploy nginx-deploy
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   3/3     3            3           17s

# 看 Pod 分布
hw@host2:~/istack$ kubectl get pod -l app=nginx --show-labels
NAME                            READY   STATUS    RESTARTS   AGE    LABELS
nginx-deploy-7dd594c5d7-94z7p   1/1     Running   0          2m8s   app=nginx,pod-template-hash=7dd594c5d7
nginx-deploy-7dd594c5d7-9ntt5   1/1     Running   0          2m8s   app=nginx,pod-template-hash=7dd594c5d7
nginx-deploy-7dd594c5d7-qvlzf   1/1     Running   0          2m8s   app=nginx,pod-template-hash=7dd594c5d7

# 扩容到 5 个副本
hw@host2:~/istack$ kubectl scale deploy nginx-deploy --replicas=5
deployment.apps/nginx-deploy scaled
hw@host2:~/istack$ kubectl get deploy nginx-deploy
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   5/5     5            5           2m37s

# 删除
kubectl delete deployment nginx-deploy

5 小结

操作命令
创建/更新kubectl apply -f xxx.yaml
扩缩容kubectl scale deploy <name> --replicas=N
滚动更新kubectl set image deploy/<name> <container>=<image> --record
查看进度kubectl rollout status deploy/<name>
回滚kubectl rollout undo deploy/<name>