首页 > 解决方案 > 只能使用 Azure-CNI 将 Windows 代理池添加到 AKS 群集

问题描述

我正在尝试使用Windows 节点池对 Azure Kubernetes 服务集群 (AKS) 进行 Terraform,但出现以下错误:

错误:创建托管 Kubernetes 集群“example-aks1”(资源组“test-aks-resource”):containerservice.ManagedClustersClient#CreateOrUpdate:发送请求失败:StatusCode=0 -- 原始错误:Code="AzureCNIOnlyForWindows" Message="Windows只能使用 Azure-CNI 将代理池添加到 AKS 群集。”

这是命令行的屏幕截图:

在此处输入图像描述

我正在使用的代码是这样的:

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.63.0"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "example" {
  name     = "test-aks-resource"
  location = "Central US"
}

resource "azurerm_kubernetes_cluster" "aks" {
  name                = "example-aks1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  dns_prefix          = "exampleaks1"
  default_node_pool {
    name       = "default"
    node_count = 1
    vm_size    = "Standard_D2_v2"
  }

  identity {
    type = "SystemAssigned"
  }

  windows_profile {
    admin_username = "adminusername"
    admin_password = "xxxxxxxxxxxxx"
  }

  tags = {
    Environment = "dev"
  }
}

resource "azurerm_kubernetes_cluster_node_pool" "windows_node_pool" {
  kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
  orchestrator_version  = azurerm_kubernetes_cluster.aks.kubernetes_version
  name                  = "winnp"
  node_count            = 1
  vm_size               = "Standard_D2_v2"
  os_type               = "Windows"
}

output "client_certificate" {
    sensitive = true
    value = azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate
}

output "kube_config" {
    sensitive = true
    value = azurerm_kubernetes_cluster.aks.kube_config_raw
}

请注意,如果我从 Terraform 代码中删除以下块,则会收到不同的错误:

  windows_profile {
    admin_username = "adminusername"
    admin_password = "xxxxxxxxxxxxx"
  }

我得到的错误是:

错误:创建/更新托管 Kubernetes 集群节点池“winnp”(资源组“test-aks-resource”):containerservice.AgentPoolsClient#CreateOrUpdate:发送请求失败:StatusCode=0 -- 原始错误:Code="WindowsProfileMissing" Message= “群集缺少 Windows 配置文件定义。”

命令行截图:

在此处输入图像描述

显然,如果我删除“azurerm_kubernetes_cluster_node_pool”代码块,则 AKS 是使用默认 Linux 节点池创建的。

所以我的问题是:如何将 Windows 节点池添加到 AKS?

标签: azurekubernetesterraformazure-aksterraform-provider-azure

解决方案


原来我必须在“azurerm_kubernetes_cluster”中包含一个网络适配器:

network_profile {
  network_plugin = "azure"
}

更多细节:

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/kubernetes_cluster#network_plugin


推荐阅读