1 目标
- 创建 Deployment
- 扩缩容
- 滚动更新 & 回滚
- 观察事件与 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> |