前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级、扩容等
1、测试环境:3节点k3s,使用其中2节点(ubuntunode1与ubuntunode2),node3暂不用
-
输入命令,查看节点状况
2、进入任意节点,使用kubectl命令行进行服务部署操作,我们这里用node1节点
-
新建一个.yaml文件,用于部署2个负载的应用,文件名称:springbootapp-2nodes.yaml
-
文件内容如下,kind节点使用Deployment类型:
-
文本如下:
apiVersion: apps/v1 kind: Deployment metadata: name: springbootapp-dep labels: app: springbootapp spec: replicas: 2 selector: matchLabels: app: springbootapp template: metadata: labels: app: springbootapp spec: containers: - name: springbootapp image: xjk27400861/springbootapp:42 ports: - containerPort: 8080
-
新建一个命名空间,用于部署集群应用
命令如下:
sudo kubectl create namespace springboot2node
-
输入命令,创建2节点副本应用,-n 指定命名空间
命令如下:
sudo kubectl create -f springbootapp-2nodes.yaml -n springboot2node
-
也可以在.yaml文件中指定命名空间:
-
输入命令,查看pod节点运行状态
命令如下:
sudo kubectl get pods -n springboot2node
-
输入命令,查看副本集情况
命令如下:
sudo kubectl get rs -n springboot2node
-
输入命令,创建一个svc的service,暴露集群
命令如下:
sudo kubectl apply -f springbootapp-2node-svc.yaml
-
springbootapp-2node-svc.yaml文件内容如下:
apiVersion: v1 kind: Service metadata: name: springbootapp-2node-svc namespace: springboot2node labels: app: springbootapp-2node-svc spec: type: NodePort ports: - port: 8080 nodePort: 30001 selector: app: springbootapp
-
通过任意节点ip+端口:30001+路由即可访问应用,我这是:http://192.168.231.133:30001/hello 或 http://192.168.231.134:30001/hello
3、k8s扩容
-
修改配置文件springbootapp-2nodes.yaml,2节点改为3节点
-
输入命令,重新部署,查看副本集变为3个
sudo kubectl apply -f springbootapp-2nodes.yaml --record=true
-
查看pod数量,也为3个
4、k8s自愈性
-
删除2个pod,模拟服务器宕机状况
sudo kubectl delete pod springbootapp-dep-67656f6dc9-cncb6 springbootapp-dep-67656f6dc9-pp47x -n springboot2node
-
重新查看pod状况,发现又重新构建了2个新的pod,保证负载还是3台
sudo kubectl get pods -n springboot2node
5、k8s升级
-
修改代码,区分版本,重新构建镜像推到仓库
-
新镜像tag:43
-
修改部署文件:springbootapp-2nodes.yaml,镜像版本改为43
-
输入命令,重新部署应用,参数--record=true让 Kubernetes 把这行命令记到发布历史中方便后面查看
sudo kubectl apply -f springbootapp-2nodes.yaml --record=true
-
ContainerCreating状态的表示新版本的容器正在启动,Running的是新版本的已经运行起来了,Terminating的这个是老版本正在停止
-
过了一段时间,发现3个节点已经创建完成
-
访问应用,即可看见新版本已发布完成
6、k8s回滚应用
-
输入命令,查看发布历史
sudo kubectl rollout history deployment springbootapp-dep -n springboot2node
-
可以看到有2个版本,我们回滚到版本1的状态
sudo kubectl rollout undo deployment springbootapp-dep --to-revision=1 -n springboot2node
-
查看回滚状态,成功
sudo kubectl rollout status deployment springbootapp-dep -n springboot2node
-
访问应用,即可看见应用已回滚到老版本
7、rancher2.x对springboot2node进行迁移,迁移到default项目下,便于rancher管理
-
点击右侧下拉菜单,移动
-
命名空间已转移到项目default中
-
以后可以通过rancher操作应用扩容缩容回滚等,会相当方便