azure - Windows 代理池只能使用 Azure-CNI 添加到 AKS 群集

标签 azure kubernetes terraform azure-aks terraform-provider-azure

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

Error: creating Managed Kubernetes Cluster "example-aks1" (Resource Group "test-aks-resource"): containerservice.ManagedClustersClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: Code="AzureCNIOnlyForWindows" Message="Windows agent pools can only be added to AKS clusters using Azure-CNI."

这是命令行的屏幕截图:

enter image description here

我使用的代码是这样的:

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 代码中删除以下 block ,我会收到不同的错误:

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

我得到的错误是:

Error: creating/updating Managed Kubernetes Cluster Node Pool "winnp" (Resource Group "test-aks-resource"): containerservice.AgentPoolsClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: Code="WindowsProfileMissing" Message="Windows profile definition is missing for the cluster."

命令行屏幕截图:

enter image description here

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

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

最佳答案

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

network_profile {
  network_plugin = "azure"
}

更多详细信息:

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

关于azure - Windows 代理池只能使用 Azure-CNI 添加到 AKS 群集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68116733/

相关文章:

.net - 如果用户不是管理员,则在 Azure 中运行 exe 时 RoleEnvironment.IsAvailable == false

amazon-web-services - 如何添加规则以允许AWS EKS上的nodePort在某些端口范围上的流量?

azure - Kubernetes 容器中的自托管 net.tcp wcf 通过 kubernetes 的负载均衡器 IP 访问

asp.net-mvc-4 - 此版本的 SQL Server 不支持语句 'RECEIVE MSG'。对于 azure 数据库

docker - Kubernetes 初始化容器 pip install

version-control - Kubernetes资源版本控制

amazon-web-services - Terraform - 为什么我不能将一个变量的值分配给另一个变量

azure - Terraform 避免删除额外的子网资源

google-cloud-platform - 从 Terraform google_service_account_key 资源获取可用的 P12 包/私钥

azure - Kubernetes CronJob 公共(public) IP