我已经使用以下 terraform 配置在 Azure 上部署了 kubernetes 集群(敏感信息已删除):
resource "azurerm_container_service" "kubernetes" {
name = "myacsname"
location = "West Europe"
resource_group_name = "someresourcegroup"
orchestration_platform = "Kubernetes"
master_profile {
count = 1
dns_prefix = "xxxmaster"
}
linux_profile {
admin_username = "xxxx"
ssh_key {
key_data = "${file("authorized_keys")}"
}
}
agent_pool_profile {
name = "default"
count = 2
dns_prefix = "xxxagent"
vm_size = "Standard_F1s"
}
service_principal {
client_id = "xxx"
client_secret = "xxx"
}
diagnostics_profile {
enabled = false
}
}
这Terraform 文档建议我可以指定多个agent_pool_profile
块,这很有意义,因为我想将某些 pod 绑定到功能更强大或更弱的节点。由于默认容器服务已beta.kubernetes.io/instance-type
在相关节点上设置了注释,因此我认为那里没有问题。
但是 Terraform 不允许agent_pool_profile
我使用多个块:
azurerm_container_service.kubernetes: agent_pool_profile: attribute supports 1 item maximum, config has 2 declared
我似乎也无法通过 Azure 门户添加更多配置文件。是否记录了对不同代理池配置文件缺乏支持的情况?
答案1
Jason Poon 的回答是正确的。Azure 容器服务本身尚不支持多个代理池,因此出现错误消息。
API 的设置是为了将来允许它们,这就是 Terraform 将其建模为支持多个代理池的原因。我猜他们允许您指定更多内容,以便每当 ACS 支持它时,Terraform 也会立即支持它。
答案2
如果您使用,则支持部署多个代理池acs-引擎。这是一个基本的 Kubernetes模板acs-engine
但是,如果您想部署多个代理池类型,您可以修改该文件,使其看起来像这样:
"masterProfile": { "count": 1, "dnsPrefix": "kubernetes-master", "vmSize": "Standard_D2_v2" }, "agentPoolProfiles": [ { "name": "agentpool2", "count": 3, "vmSize": "Standard_D2_v2", "availabilityProfile": "AvailabilitySet" }, { "name": "agentpool1", "count": 2, "vmSize": "Standard_DS2", "availabilityProfile": "AvailabilitySet" }
不幸的是,我不熟悉地形,不知道是否可以通过那条路径实现。