Kubernetes Rolling Upgrade (Rollout&Rollback)
Thanks for these blogs
https://tachingchen.com/tw/blog/Kubernetes-Rolling-Update-with-Deployment/ https://www.linux.com/learn/rolling-updates-and-rollbacks-using-kubernetes-deployments
Yaml file
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginxstor
spec:
#serviceName: "nginxstor"
replicas: 2
template:
metadata:
labels:
app: nginxstor
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- nginxstor
topologyKey: kubernetes.io/hostname
containers:
- name: nginxstor
image: 192.168.51.130:5000/uwebserverv6
ports:
- containerPort: 8000
minReadySeconds: 5
strategy:
# indicate which strategy we want for rolling update
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
Adding rolling strategy strategy
for rolling upgrade.
minReadySeconds: 5
strategy:
# indicate which strategy we want for rolling update
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
Sleep minReadySecond
after container's daemon running and it then start another container.
Rollout (upgrade)
kubectl set image deployment nginxstor nginxstor=192.168.51.130:5000/uwebserverv7 --record
It will start rolling upgrade now
There are several ways to upgrade container, but I prefer this way since with less dependency.
--record
is notify kubernetes to record the history, and you will see it later.
To check the status
kubectl rollout status deployment nginxstor
Rollback (downgrade)
To check the version
kubectl rollout history deployment nginxstor
deployments "nginxstor"
REVISION CHANGE-CAUSE
1 <none>
2 kubectl set image deployment nginxstor nginxstor=192.168.51.130:5000/uwebserverv7 --record=true
Let's go back to revision 1
kubectl rollout undo deployment nginxstor --to-revision=1
Try it, it works amazingly.
No comments:
Post a Comment