azure - 只能使用 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?
解决方案
原来我必须在“azurerm_kubernetes_cluster”中包含一个网络适配器:
network_profile {
network_plugin = "azure"
}
更多细节:
推荐阅读
- swift - Swift 有条件的向下转型什么都不做
- javascript - 使用本机文件系统 API 在 Windows 资源管理器中打开文件夹
- sql - 哪些资源使用 GCP VM 实例对 GCP SQL 实例执行任何操作?
- vba - 在 AutoCAD vba 中出现数组错误。下标超出范围
- html - 如何使 2 个表格单元格的长度相同但文本数量不同?
- javascript - 带有 HTML5 视频的 WebView 中的内存泄漏
- c# - 数据库集
将 EF Core 从 2.2.6 升级到 3.1.3 时出现 .Local.Any() 性能问题 - c# - 并行数据结构
- angular - 将 Angular 调试构建/应用程序添加到 IIS
- django - Django - 视图 accounts.decorators.wrapper_function 没有返回 HttpResponse 对象。它返回 None 而不是