Создание группы узлов
Чтобы разместить в кластере Managed Kubernetes рабочую нагрузку, создайте группу узлов.
- Веб-консоль
- MWS CLI
- Terraform
- API
В веб-консоли выберите нужный проект.
В списке сервисов выберите Managed Kubernetes. Откроется список кластеров.
Нажмите на значок ... для кластера, в котором нужно создать группу узлов, и выберите Добавить группу узлов.
(опционально) Измените автоматически сгенерированное имя группы узлов. Позже это имя (name) и созданный из него идентификатор (ID) нельзя изменить, меняется только отображаемое имя (display name) группы узлов.
Выберите зону доступности для размещения группы узлов.
Выберите подсеть для размещения группы узлов или создайте новую подсеть.
Выберите версию Kubernetes для группы узлов.
В блоке Сервисное окно настройте расписание, по которому группы узлов будут проходить техническое обслуживание.
(опционально) Введите описание группы узлов.
Нажмите кнопку Далее.
Выберите сервисный аккаунт, который будет привязан к группе узлов, или создайте новый.
ВажноДля работы группы узлов сервисному аккаунту достаточно роли
registry.puller. Подробнее о том, как обезопасить работу группы узлов, см. в статье Управление доступом.
Если у вас нет утилиты MWS CLI:
При необходимости создайте новую подсеть, где будет размещена группа узлов.
Определите тип виртуальных машин для узлов.
Например, тип
gen-2-4соответствует ВМ с 2 vCPU и 4 ГБ оперативной памяти.При необходимости создайте сервисный аккаунт, который будет использоваться для работы группы узлов.
ВажноДля работы группы узлов сервисному аккаунту достаточно роли
registry.puller. Подробнее о том, как обезопасить работу группы узлов, см. в статье Управление доступом.Узнайте имя кластера:
bash 1mws mk8s cluster listВыполните команду:
bash 1mws mk8s node-group create <имя группы узлов> \2--cluster-name <имя кластера> \3--zone <зона доступности — ru-central1-a или ru-central1-b> \4--subnet-ref projects/<имя проекта>/networks/<имя сети>/subnets/<имя подсети> \5--vm-type-ref compute/vmTypes/<тип ВМ — например, gen-2-4> \6--image-storage-size <размер хранилища для контейнеров — например, 10Gb> \7--scale-fixed <число узлов> \8--version-control-version <версия Kubernetes — например, v1.31.13-mws.1> \9--version-control-maintenance-window-weekly-days <день недели — например, MONDAY> \10--version-control-maintenance-window-weekly-hour <время начала сервисного окна — от 0 до 23> \11--rollout-strategy-max-surge <максимальный шаг изменения числа узлов в группе> \12--rollout-strategy-max-unavailable <максимальное число недоступных узлов при изменении числа узлов в группе> \13--service-account-ref <имя сервисного аккаунта с ролью `registry.puller`>Чтобы создать группу узлов с автоматическим масштабированием, воспользуйтесь инструкцией.
Если команда была успешно выполнена, вы получите ответ с параметрами созданной группы узлов.
Если у вас не установлен Terraform, установите его.
Убедитесь, что у вас есть кластер, где будет размещена группа узлов. Если у вас нет кластера, создайте его.
Определите тип виртуальных машин для узлов.
Например, тип
gen-2-4соответствует ВМ с 2 vCPU и 4 ГБ оперативной памяти.Опишите в конфигурационном файле параметры группы узлов, которую необходимо создать:
hcl 1resource "mws_mk8s_node_group" "<имя группы узлов>" {2cluster_name = <имя кластера>3node_group_name = "<имя группы узлов>"45service_account = {6ref = <ID сервисного аккаунта с ролью `registry.puller`>7}89subnet = {10ref = <ID подсети>11}1213vm_type = {14ref = "compute/vmTypes/<имя типа ВМ>"15}1617scale = {18autoscaling = {19min = 520max = 1021}22}2324rollout_strategy = {25max_surge = 126max_unavailable = 027}2829version_control = {30auto_update = true31version = "v1.34.1-mws.1"32maintenance_window = {33weekly = {34days = [<дни недели — например, "MONDAY", "WEDNESDAY">]35hour = <время начала сервисного окна — от 0 до 23>36duration = "<длительность окна технического обслуживания — например, 4h>"37}38}39}4041image_storage_size = "<размер хранилища в гигабайтах>"4243labels = [44{ key = "<ключ 1>", value = "<значение 1>" },45{ key = "<ключ 2>", value = "<значение 2>" }46]4748taints = []4950zone = "ru-central1-a"51}Здесь:
cluster_name— имя кластера, где будет создана группа узлов;node_group_name— имя группы узлов;service_account— сервисный аккаунт, который будет использоваться для управления группой узлов;ВажноДля работы группы узлов сервисному аккаунту достаточно роли
registry.puller. Подробнее о том, как обезопасить работу группы узлов, см. в статье Управление доступом.vm-type— тип виртуальной машины для узлов;секция
scale— настройки масштабирования группы узлов:min— минимальное количество узлов;max— возможное максимальное количество узлов (ограничение при масштабировании);
секция
rollout strategy— стратегия обновления узлов:max_surge— максимальный шаг при изменении числа узлов в группе;max_unavailable— максимальное число недоступных узлов при изменении числа узлов в группе;
секция
version_control— настройки управления версиями и обслуживанием:maintenance_window— параметры сервисного окна: периодичность, время начала, продолжительность;version— версия Kubernetes;
image_storage_size— размер хранилища для контейнеров в гигабайтах;секция
labels— метки для узлов;секция
taints— ограничения для узлов (определяют, какие поды могут работать на этих узлах);zone— зона доступности:ru-central1-aилиru-central1-b
Проверьте конфигурационный файл на наличие синтаксических ошибок:
bash 1terraform validateЕсли ошибок нет, вы получите следующее сообщение:
bash 1Success! The configuration is valid.Выполните команду:
bash 1terraform planTerraform проверит конфигурационные файлы, сопоставит описание желаемого состояния облачной инфраструктуры с фактическим и укажет, какие операции с ресурсами будут выполнены.
Примените конфигурацию:
bash 1terraform applyПодтвердите выполнение операций: введите слово
yesи нажмите Enter.Во время создания ресурсов Terraform будет выводить краткие сообщения о выполняемых операциях. Проверить, что ресурсы созданы и настроены корректно, можно в веб-консоли.
Убедитесь, что у вас есть IAM-токен для авторизации запроса. Если нет, получите его.
Определите тип виртуальных машин для узлов.
Например, тип
gen-2-4соответствует ВМ с 2 vCPU и 4 ГБ оперативной памяти.Опишите характеристики группы узлов в виде JSON-объекта и сохраните его в отдельном файле. Обязательные параметры:
json 1{2"metadata": {3"name": "<имя группы узлов>"4},5"spec": {6"zone": "<зона доступности — ru-central1-a или ru-central1-b>",7"subnet": {8"ref": "projects/<имя проекта>/networks/<имя сети>/subnets/<имя подсети>"9},10"vmType": {11"ref": "compute/vmTypes/<тип ВМ — например, gen-2-4>"12},13"imageStorageSize": "<размер хранилища для контейнеров — например, 10Gb>",14"scale": {15"fixed": <число узлов>16},17"versionControl": {18"version": "<версия Kubernetes — например, v1.31.13-mws.1>",19"maintenanceWindow": {20"weekly": {21"days": ["<день недели — например, MONDAY>"],22"hour": <время начала сервисного окна — от 0 до 23>23}24}25},26"rolloutStrategy": {27"maxSurge": <максимальный шаг изменения числа узлов в группе>,28"maxUnavailable": <максимальное число недоступных узлов при изменении числа узлов в группе>29},30"serviceAccount": {31"ref": "projects/<имя проекта>/serviceAccounts/<имя сервисного аккаунта с ролью `registry.puller`>"32}33}34}Чтобы создать группу узлов с автоматическим масштабированием, воспользуйтесь инструкцией.
ВажноДля работы группы узлов сервисному аккаунту достаточно роли
registry.puller. Подробнее о том, как обезопасить работу группы узлов, см. в статье Управление доступом.Узнайте имя кластера:
bash 1curl -X GET https://mk8s.mwsapis.ru/mk8s/v1/projects/<имя проекта>/clusters \2-H "Authorization: Bearer <IAM-токен>"Выполните запрос:
bash 1curl -X POST https://mk8s.mwsapis.ru/mk8s/v1/projects/<имя проекта>/clusters/<имя кластера>/nodeGroups/<имя группы узлов> \2-H "Authorization: Bearer <IAM-токен>" \3-H "Content-Type: application/json" \4-d '@<путь к файлу с JSON-объектом>'Если запрос был успешно принят, вы получите ответ с параметрами созданной группы узлов.