pv.yaml:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-data-10m
spec:
capacity:
storage: 10Mi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /nfs/data/01
server: 192.168.2.140
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-data-1gi
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /nfs/data/02
server: 192.168.2.140
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-data-5gi
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /nfs/data/03
server: 192.168.2.140
pvc.yaml:
apiVersion: v1
kind: Namespace
metadata:
name: dev
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nginx
namespace: dev
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 200Mi
storageClassName: nfs
nginx-dp-svc-pvc.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: dev
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: nginx-pv-storage
mountPath: /usr/share/nginx/html
volumes:
- name: nginx-pv-storage
persistentVolumeClaim:
claimName: pvc-nginx
---
apiVersion: v1
kind: Service
metadata:
labels:
app: svc-nginx
name: svc-nginx
namespace: dev
spec:
ports:
- name: 8000-80
port: 8000
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort
root@k8s-master1:~# kubectl apply -f pv.yaml -f pvc.yaml -f nginx-dp-svc-pvc.yaml
root@k8s-master1:~# kubectl get deploy -n dev
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 35m
root@k8s-master1:~# kubectl edit deploy nginx-deployment -n dev
查看:.spec.template.spec.containers[0].image

更新为nginx:1.26.2, imagePullPolicy如果是always修改为IfNotPresent

在.metadata.annotations这里写上更新原因描述:kubernetes.io/change-cause: update to nginx:1.26.2

:wq保存退出
观察滚动更新的过程
仔细查看输出信息,可以发现,kubernetes逐步的创建新pod,同时也在销毁旧pod,保证系统里始终有足够数量的pod在运行,不会有“空窗期”中断业务。新pod的数量增加的过程有点像滚雪球,从零开始越滚越大,所以这就是所谓的“滚动更新”(rolling update)。
root@k8s-master1:~# kubectl describe deploy nginx-deployment -n dev

1、一开始时候,v1的pod数量是3.
2、滚动更新开始的时候,kubernetes创建了1个v2的pod(ddc75986),并将v1pod(8845b589f)减少到2个.
3、接着再增加v2pod的数量到2,同时v1pod的数量变成了1.
4、最后v2pod的数量达到预期值3,v1pod的数量变成了0,整个更新过程结束了.
root@k8s-master1:~# kubectl rollout status deploy nginx-deployment -n dev

查看更新历史
root@k8s-master1:~# kubectl rollout history deploy nginx-deployment -n dev

查看某一个版本具体的信息:
root@k8s-master1:~# kubectl rollout history --revision=8 deploy nginx-deployment -n dev

回滚到先前的版本:
root@k8s-master1:~# kubectl rollout undo --to-revision=9 deploy nginx-deployment -n dev
deployment.apps/nginx-deployment rolled back
root@k8s-master1:~#

Categories:
docker与kubernetes