Я развернул кластер Kubernetes в Azure, используя следующую конфигурацию terraform (конфиденциальная информация удалена):
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
блоки, что имеет большой смысл, поскольку я хотел бы привязать определенные поды к более или менее мощным узлам. Поскольку служба контейнеров по умолчанию уже устанавливает 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. Задокументировано ли где-нибудь отсутствие поддержки различных профилей пула агентов?
Развертывание нескольких пулов агентов поддерживается, если вы используете 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"
}
К сожалению, я не знаком с терраформом, чтобы знать, возможно ли это на этом пути.
Ответ Джейсона Пуна правильный. Сама служба контейнеров Azure еще не поддерживает несколько пулов агентов, поэтому появляется сообщение об ошибке.
API настроен так, чтобы позволить им в будущем, поэтому Terraform моделирует его как поддержку нескольких пулов агентов. Я предполагаю, что они позволяют вам указать больше, чтобы всякий раз, когда ACS поддерживает это, Terraform также немедленно поддерживает его.