kind搭建k8s集群中扩容更新回滚AspNetCore应用(Scale、Rolling 、Update)
在K8S中,可以根据访问量,以一种简单的形式动态扩展我们的应用,以及以一种零停机时间的形式滚动更新我们的 应用。
以下演示均以上篇文章的deployment文件为例。
1、Scale
创建上面所示的Deployment,replicas为1:
kubectl apply -f demoDeployment-1.yaml
如下图所示,成功创建了一个服务副本:
执行以下命令扩容到4个:
kubectl scale deployment k8s-demo-deployment --replicas 4
如下图所示,成功创建了四个副本运行在两个节点下:
测试下,浏览器访问:
2、Rolling Update
如需要更新镜像,并不会一次性全部更新,而是创建一个新的pod,暂停一个旧的pod,创建完成后删除旧的pod,确保每次只有一个pod不可用。
更新镜像:
kubectl set image deployment/k8s-demo-deployment aspnetcore=easyboys/k8sdemo:v2
如下图所示,三个pod为runing状态,只有一个pod处理更新状态。
项目编译后拖到Centos系统中
cd /home/website/WebApiK8S.Test.V2/
docker build -f Dockerfile -t 'webapik8stest:V2' .
不能直接使用主机上的镜像,需要导入到kind的节点(容器中)
kind load docker-image webapik8stest --name tsk8s
更新镜像:
kubectl set image deployment/k8s-demo-deployment k8s-demo=webapik8stest:V2
如下图所示
![](https://img2022.cnblogs.com/blog/2550804/202207/2550804-20220713185355690-699476744.png)
http://192.168.192.140:30000/api/test
回滚更新:
回滚到上一次的更新状态
kubectl rollout undo deployment/k8s-demo-deployment
查看回滚状态:
kubectl rollout status deployment/k8s-demo-deployment
![](https://img2022.cnblogs.com/blog/2550804/202207/2550804-20220714101810947-217664068.png)
如下图,成功回滚到v1版本
回滚到指定版本:
如果要回滚到指定本版,那么每次发布的都有带上 --record参数
准备三个demoployment:
demoDeployment-1.yaml 对应image:easyboys/k8sdemo:v1
demoDeployment-2.yaml 对应image:easyboys/k8sdemo:v2
demoDeployment-3.yaml 对应image:easyboys/k8sdemo:v3
分别依次执行:
kubectl apply -f demoDeployment-1.yaml --record
kubectl apply -f demoDeployment-2.yaml --record
kubectl apply -f demoDeployment-3.yaml --record
查看Deployment升级的历史记录:
kubectl rollout history deployment/k8s-demo-deployment
查看单个revision的详细信息:
kubectl rollout history deployment/k8s-demo-deployment --revision=2
回退指定版本:
--to-revision 指定版本号
kubectl rollout undo deployment/k8s-demo-deployment --to-revision=1
鸣谢:
https://www.cnblogs.com/roluodev/p/13862336.html
本文来自博客园,作者:{春光牛牛,yak},转载请注明原文链接:https://www.cnblogs.com/yakniu/p/16475196.html
欢迎各位大佬们评论指正
QQ讨论群:610129902