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

如下图所示

 

http://192.168.192.140:30000/api/test

 

  

回滚更新:

回滚到上一次的更新状态

kubectl rollout undo deployment/k8s-demo-deployment

查看回滚状态:

kubectl rollout status deployment/k8s-demo-deployment

如下图,成功回滚到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

1603374289(1)

查看单个revision的详细信息:

kubectl rollout history deployment/k8s-demo-deployment --revision=2

1603374367(1)

回退指定版本:

--to-revision 指定版本号

kubectl rollout undo deployment/k8s-demo-deployment --to-revision=1 

鸣谢:
https://www.cnblogs.com/roluodev/p/13862336.html
posted @ 2022-07-13 19:03  春光牛牛  阅读(63)  评论(0编辑  收藏  举报