【问题标题】:Scaling multiple kubernetes node pools on azure在 azure 上扩展多个 kubernetes 节点池
【发布时间】:2019-10-09 17:28:39
【问题描述】:

我正在创建一个函数来在 azure 上安排节点池缩放。

这很容易使用 AKS 模块并创建一个函数来扩展节点池,但现在开发团队已经开始在同一个 kubernetes 服务中使用多个节点池,通常我会按照以下方式使用 Set-AzAks

Set-AzAks -Name <name> -ResourceGroupName <rgname> -NodeCount 1

但我似乎无法在命令中指定单个节点池。我已经能够使用 az CLI 工具来获得我想要手动执行的功能,但我真的想使用 azure 自动化帐户来执行此操作。

任何帮助将不胜感激

【问题讨论】:

    标签: azure powershell kubernetes azure-aks


    【解决方案1】:

    这是一个已经存在于 Github 中的issue。所以我认为在当前情况下使用 PowerShell 命令Set-AzAks 来缩放 AKS 节点数并不是一个好方法。

    为此,我建议您通过 PowerShell 使用 Azure REST API Managed Clusters - Create Or Update,它也可以作为 Azure CLI 命令完美地为您工作。

    更新:

    如你所愿,我将向你展示下面的示例:

    $body = '{
      "location": "eastus",
      "properties": {
        "kubernetesVersion": "1.14.6",
        "dnsPrefix": "xxxxx",
        "agentPoolProfiles": [
          {
            "count": 2,
            "vmSize": "Standard_DS2_v2",
            "osDiskSizeGB": 100,
            "vnetSubnetID": "xxxxxxxx",
            "maxPods": 30,
            "osType": "Linux",
            "type": "AvailabilitySet",
            "orchestratorVersion": "1.14.6",
            "name": "agentpool"
          }
        ],
        "addonProfiles": {
          "httpapplicationrouting": {
            "enabled": false,
            "config": {}
          },
          "omsagent": {
            "enabled": true,
            "config": {
              "loganalyticsworkspaceresourceid": "xxxxxxxx"
            }
          }
        },
        "nodeResourceGroup": "xxxxxxxxx",
        "enableRBAC": true,
        "networkProfile": {
          "networkPlugin": "azure",
          "serviceCidr": "10.1.0.0/16",
          "dnsServiceIP": "10.1.0.10",
          "dockerBridgeCidr": "172.17.0.1/16",
          "loadBalancerSku": "Basic"
        }
      }
    }'
    $requestUri = "https://management.azure.com/subscriptions/{subscription_id}/resourceGroups/{your_group_name}/providers/Microsoft.ContainerService/managedClusters/{your_cluster_name}?api-version=2019-08-01"
    $accessToken = "xxxxxxx"
    Invoke-RestMethod -Headers @{Authorization = "Bearer $accessToken"} -Uri $requestUri -Method PUT -ContentType 'application/json' -Body $body
    

    您可以根据需要更改正文中的上下文以及 REST API 中描述的属性。

    【讨论】:

    • 您能否更详细地解释一下如何使用 REST API?我很难理解他们的文档。我应该如何指定哪些节点池等似乎相当神秘。
    • @Shadesfear 我更新了答案以根据需要添加 PowerShell 脚本。如果它适合你,请接受它作为答案。
    • @Shadesfear 您目前的情况有什么更新吗?它解决了你的问题吗?
    • 我刚开始尝试,我不断收到此错误:[错误消息]远程服务器返回错误:(400)错误请求。我在 $body 中尝试了一些不同的选项,但还是一样
    • @Shadesfear 您可以获取 AKS 集群的属性,然后按照答案所示更改格式。
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2022-01-05
    相关资源
    最近更新 更多