目录
一、水平扩展/收缩
1.1、创建一个Dockerfile
FROM daocloud.io/library/nginx
RUN echo "nginx:1.16.1" > /usr/share/nginx/html/index.html
1.2、 开始构建
把我们构建好的镜像推送到仓库里面。
ok。推送成功!
1.3、创建一个deployment
在master主机上创建
[root@kube-master ~]# kubectl create deployment nginx-test --image=192.168.18.103/library/nginx:1.16.1 --namespace=default --dry-run -o yaml > nginx-test.yml
我们将这里的副本数replicas改为4
然后我们给master开一个窗口看他的结果,他会给我们再增加三个nginx副本。
在这里我们可以请求一下,请求成功!
1.4、创建另外一个Dockerfile
FROM daocloud.io/library/nginx
RUN echo "nginx:1.20.2" > /usr/share/nginx/html/index.html
1.5、开始构建,推送
推送镜像到我们的本地仓库
1.6、查看Deployment
如此交替进行,新 ReplicaSet 管理的 Pod 副本数,从 0 个变成 1 个,再变成 2 个,最后变成 3 个。而旧的 ReplicaSet 管理的 Pod 副本数则从 3 个变成 2 个,再变成 1 个,最后变成 0 个。这样,就完成了这一组 Pod 的版本升级过程。
注意:启动一个新的,宕掉一个旧的。起新宕旧,水平收缩,滚动更新。
二、滚动更新
2.1、创建一个Dockerfile
FROM daocloud.io/library/nginx
RUN echo "nginx:latest" > /usr/share/nginx/html/index.html
2.2、开始构建镜像
2.3、查看本地仓库镜像
2.4、 修改nginx-test.yml文件
2.5、创建一个service
apiVersion: v1
kind: Service
metadata:
name: nginx-deploy-service
spec:
selector:
app: nginx-test
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 32333
运行我们的service
2.6、测试访问
访问成功!
2.7、更新版本
2.8、更新最新版本
这就是版本的滚动更新。
三、版本回滚
3.1、查看版本历史
3.2、回滚到以前的版本
[root@kub-k8s-master ]# kubectl rollout undo deployment/nginx-test --to-revision=2
deployment.apps/dep02 rolled back
由于在创建这个 Deployment 的时候,指定了--record 参数,会将创建这些版本时执行的 kubectl 时文件中的配置,都会记录下来。