创建一个deployment
---
apiVersion: v1
kind: Namespace
metadata:
name: nginx-dep
labels:
name: nginx-dep
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: nginx-dep
name: myapp
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16.1
ports:
- containerPort: 80
查看
[root@k8s-master ~]# kubectl get pod -n test
NAME READY STATUS RESTARTS AGE
myapp-558547cf67-76xfz 1/1 Running 0 78s
myapp-558547cf67-9fgs4 1/1 Running 0 94s
myapp-558547cf67-k4tvw 1/1 Running 0 96s
myapp-558547cf67-x8rqk 1/1 Running 0 96s
滚动更新
kubectl set image deployment/myapp myapp=nginx:1.16.1 --record
deployment/myapp deploy资源对象中的myapp
第二个myapp是pod名称
# 滚动完后可以查看滚动更新的处理过程,我们会发现是关闭一个旧的容器后启动一个新的容器,直到全部完成。
[root@k8s-master ~]# kubectl rollout status deployment/myapp -n nginx-dep
deployment "myapp" successfully rolled out
查看更新历史并回滚
[root@k8s-master ~]# kubectl rollout history deployment/myapp -n nginx-dep
deployment.apps/myapp
REVISION CHANGE-CAUSE
1 none
2 kubectl set image deployment/myapp nginx=nginx --record=true --namespace=nginx-dep
# 回滚到上次
kubectl rollout undo deployment/nginx-dep -n nginx-dep
#回滚(回到指定版本)
kubectl rollout undo deployment/myapp --to-revision=1 -n nginx-dep
deployment.apps/myapp rolled back
查看
kubectl describe pod myapp-559d658b74-8nxcp -n nginx-dep
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 68s default-scheduler Successfully assigned nginx-dep/myapp-559d658b74-8nxcp to k8s-node2
Normal Pulled 69s kubelet Container image "nginx:1.16.1" already present on machine
Normal Created 69s kubelet Created container nginx
Normal Started 69s kubelet Started container nginx
# 镜像已经回滚到了原有的nginx
Comments | NOTHING