• 使用acs-engine扩容Azure Kubernetes集群


    一. 在部署Kubernetes集群时,我们使用acs-engine生成了3个json文件以及一些证书文件,如下:  

    1. apimodel.json - 集群配置文件
    2. azuredeploy.json - 核心的ARM (Azure Resource Model)模板,用来部署k8s集群
    3. azuredeploy.parameters.json - 部署参数文件,其中的参数可以自定义
    4. certificate and access config files - kubernetes需要的一些证书,这些证书文件和它依赖的kube config配置文件也存放在和ARM模板同级目录下面

      需要注意的是,当修改已有的Docker容器集群的时候,应该修改apimodel.json文件来保证最新的部署不会影响到目前集群中已有的资源。举个例子,如果一个容器集群中的节点数量不够的时候,可以修改apimodel.json中的集群节点数量,然后重新运行acs-engine命令并将apimodel.json作为输入参数来生成新的ARM模板。这样部署以后,集群中的旧的节点就不会有变化,新的节点会自动加入。目前只支持node节点的扩容。

    二. 修改apimodel.json中node节点的数量,并使用apimodel.json文件作为输入文件来生成新的模板。

    {
      "apiVersion": "vlabs",
      "location": "chinaeast",
      "properties": {
        "orchestratorProfile": {
          ....
        },
        "masterProfile": {
          "count": 3,    
        },
        "agentPoolProfiles": [
          {
            "name": "testagpool1",
            "count": 4,    #修改node节点数量,扩容到4个node节点
          }
    }

    三. 修改新生成的azuredeploy.json 和 azuredeploy.parameters.json文件,添加Offset信息。

      在新生成的模板文件以及参数文件中,需要修改和添加node节点的offset数量,标明在扩容前已经存在的node节点数量,这样扩容就不会去修改已存在offset数量的虚机,而从offset位置开始新建虚机。

      如果你再扩容中发现如下错误,那应该是没有正确配置好offset的数量:

    {
      "error": {
        "code": "PropertyChangeNotAllowed",
        "target": "customData",
        "message": "Changing property 'customData' is not allowed."
     }

      修改azuredeploy.json中node节点的offset数量,例如若扩容前已经有2个node节点,则offset为2:

    "testagpool1Offset": {
          "allowedValues": [
            0,
            ....
            99
          ],
          "defaultValue": 2,
          "metadata": {
            "description": "The offset into the agent pool where to start creating agents.  This value can be from 0 to 99, but must be less than agentCount"
          },
          "type": "int"
        }

      azuredeploy.parameters.json中添加node节点offset信息:

    "testagpool1Offset": {
       "value": 2
    }

    四. 删除网络安全组中的网络接口关联。

      部署kubernetes时,acs-engine建了一个网络安全组,并关联了master和所有node节点的网卡。而在扩容过程中,脚本会删除掉这个网络安全组中除了默认22/443端口的其他所有端口,因此在执行扩容命令之前,需要将网络安全组中的网卡取消关联,否则在扩容过程中将会导致无法从外部访问服务。如果你的服务不需要从外部访问,则可以不进行此操作。

      

    五. 执行扩容指令实现node节点扩容。

    Azure CLI2 :

    $ az cloud set -n AzureChinaCloud
    
    $ az login
    
    $ az account set --subscription "<SUBSCRIPTION NAME OR ID>"
    
    $ az group create 
        --name "<RESOURCE_GROUP_NAME>" 
        --location "<LOCATION>"
    
    $ az group deployment create 
        --name "<DEPLOYMENT NAME>" 
        --resource-group "<RESOURCE_GROUP_NAME>" 
        --template-file "./_output/<INSTANCE>/azuredeploy.json" 
        --parameters "./_output/<INSTANCE>/azuredeploy.parameters.json"
  • 相关阅读:
    springmvc整合elasticsearch
    测试中出现ERROR StatusLogger No log4j2 configuration file
    SpringBoot项目取消数据库配置
    centos7 更换jdk版本
    对前后端解耦的理解
    满足java对redis的所有操作,token,验证码过期时间等
    在spring的过滤器中注入实体类(@autowire会失效可使用这个方法)
    linux 下vim中关于删除某段,某行,或全部删除的命令
    解决问题Can’t connect to local MySQL server through socket
    centos6.5 mqtt安装
  • 原文地址:https://www.cnblogs.com/wayneiscoming/p/7753590.html
Copyright © 2020-2023  润新知