Kubernetes 提供了为容器升级和回滚的功能,当集群中的某个服务需要升级时,我们需要停止目前与该服务相关所有的 Pod,然后根据改动后的内容创建新的 Pod。如果集群规模较大,这个工作将变成一个挑战,而且先全部停止然后逐步升级的方式会导致较长时间的服务不可用,Kubernetes 提供了滚动升级功能来解决上述问题,同时如果在升级过程中出现了差错,可以通过回滚功能回滚到之前部署的任意版本。
一、Deployment 的升级
以 Deployment类资源文件,nginx-deploy.yaml 为例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
k8s-app: nginx-demo
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
创建容器,命令如下:
[root@master ~]# kubectl apply -f nginx-deploy.yaml --record
deployment.apps/nginx-deploy created
已运行的 Pod 副本