zoukankan      html  css  js  c++  java
  • k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用

    前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级、扩容等

    1、测试环境:3节点k3s,使用其中2节点(ubuntunode1与ubuntunode2),node3暂不用

    • 输入命令,查看节点状况
      image

    2、进入任意节点,使用kubectl命令行进行服务部署操作,我们这里用node1节点

    • 新建一个.yaml文件,用于部署2个负载的应用,文件名称:springbootapp-2nodes.yaml

      image

    • 文件内容如下,kind节点使用Deployment类型:

      image

    • 文本如下:
        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
      

      image

    • 输入命令,创建2节点副本应用,-n 指定命名空间
      命令如下:
        sudo kubectl create -f springbootapp-2nodes.yaml -n springboot2node
      

      image

    • 也可以在.yaml文件中指定命名空间:

      image

    • 输入命令,查看pod节点运行状态
      命令如下:
        sudo kubectl get pods -n springboot2node
      

      image

    • 输入命令,查看副本集情况
      命令如下:
        sudo kubectl get rs -n springboot2node
      

      image

    • 输入命令,创建一个svc的service,暴露集群
      命令如下:
        sudo kubectl apply -f springbootapp-2node-svc.yaml
      

      image

    • 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
      

      image

    • 通过任意节点ip+端口:30001+路由即可访问应用,我这是:http://192.168.231.133:30001/hellohttp://192.168.231.134:30001/hello

      image

    3、k8s扩容

    • 修改配置文件springbootapp-2nodes.yaml,2节点改为3节点
      image
    • 输入命令,重新部署,查看副本集变为3个
        sudo kubectl apply -f springbootapp-2nodes.yaml --record=true 
      
      image
    • 查看pod数量,也为3个
      image

    4、k8s自愈性

    • 删除2个pod,模拟服务器宕机状况
        sudo kubectl delete pod springbootapp-dep-67656f6dc9-cncb6 springbootapp-dep-67656f6dc9-pp47x -n springboot2node
      
      image
    • 重新查看pod状况,发现又重新构建了2个新的pod,保证负载还是3台
        sudo kubectl get pods -n springboot2node
      
      image

    5、k8s升级

    • 修改代码,区分版本,重新构建镜像推到仓库
      image
    • 新镜像tag:43
      image
    • 修改部署文件:springbootapp-2nodes.yaml,镜像版本改为43
      image
    • 输入命令,重新部署应用,参数--record=true让 Kubernetes 把这行命令记到发布历史中方便后面查看
        sudo kubectl apply -f springbootapp-2nodes.yaml --record=true
      
      image
    • ContainerCreating状态的表示新版本的容器正在启动,Running的是新版本的已经运行起来了,Terminating的这个是老版本正在停止
    • 过了一段时间,发现3个节点已经创建完成
      image
    • 访问应用,即可看见新版本已发布完成
      image

    6、k8s回滚应用

    • 输入命令,查看发布历史
        sudo kubectl rollout history deployment springbootapp-dep -n springboot2node
      
      image
    • 可以看到有2个版本,我们回滚到版本1的状态
        sudo kubectl rollout undo deployment springbootapp-dep --to-revision=1 -n springboot2node
      
    • 查看回滚状态,成功
        sudo kubectl rollout status deployment springbootapp-dep -n springboot2node
      
      image
    • 访问应用,即可看见应用已回滚到老版本
      image

    7、rancher2.x对springboot2node进行迁移,迁移到default项目下,便于rancher管理

    image

    • 点击右侧下拉菜单,移动
      image
      image
    • 命名空间已转移到项目default中
      image
    • 以后可以通过rancher操作应用扩容缩容回滚等,会相当方便
      image
  • 相关阅读:
    idea开发工具关于svn上代码的颜色
    写一个Request包装类ExternalApiHttpServletRequestWrapper(外部接口请求使用用于解密)
    什么情况下,需要用事务?
    SpringBoot 2.1.6.RELEASE ->SpringCloudAlibaba
    oracle查看锁表进程,杀掉锁表进程
    JavaScript 闭包
    萤石云定时更新 accessToken
    Ubuntu Linux的DevExpressReport无法显示报表(.net core)
    Vue在IE下打开空白解决方案
    DFT scan chain 介绍
  • 原文地址:https://www.cnblogs.com/kunwn/p/15422257.html
Copyright © 2011-2022 走看看