Перед выполнением любой операции с кластером из Terraform ознакомьтесь с информацией в разделе Использование Terraform.
Личный кабинет
- Перейдите в личный кабинет LinxCloud.
- Выберите проект и регион, где находится нужный кластер.
- Перейдите в раздел Контейнеры → Кластеры Kubernetes.
- Раскройте меню нужного кластера и выберите пункт Добавить группу узлов.
- Задайте настройки для группы узлов.
- Нажмите кнопку Добавить группу узлов.
Terraform
- Определите, какие типы виртуальных машин будет использоваться для группы worker-узлов кластера:
- Выполните команду:
openstack flavor list
Будут выведены доступные типы виртуальных машин.
- Выберите нужные типы виртуальных машин и запишите их имена из колонки Name.
- Выполните команду:
- Добавьте ресурс lcs_kubernetes_node_group и нужные источники данных в файл конфигурации Terraform:
1... 2 3# Уже описанная конфигурация для кластера 4resource "lcs_kubernetes_cluster" "k8s-cluster" { ... } 5 6... 7 8# Новый источник данных — тип виртуальной машины для узлов 9data "lcs_compute_flavor" "k8s-node-group-flavor" { 10 name = "<выбранный тип виртуальной машины>" 11} 12 13# Новый ресурс — группа worker-узлов 14resource "lcs_kubernetes_node_group" "k8s-node-group" { 15 name = "k8s-node-group" 16 node_count = <количество узлов в группе> 17 cluster_id = lcs_kubernetes_cluster.k8s-cluster.id 18 flavor_id = data.lcs_compute_flavor.k8s-node-group-flavor.id 19}
При необходимости задайте дополнительные настройки, приведенные в документации ресурса.
- Проверьте конфигурационный файл Terraform на корректность:
terraform validate
- Ознакомьтесь с планируемыми изменениями:
terraform plan
- Примените планируемые изменения:
terraform apply
Настроить параметры масштабирования
Размер группы worker-узлов можно изменить вручную или настроить автомасштабирование.
Эти операции подробно описаны в разделе Масштабирование узлов кластера.
Настроить метки и ограничения
Настраивайте ограничения (taints) с осторожностью, если на узле уже размещена рабочая нагрузка.
Перенастройка ограничений может привести к расселению (eviction) подов на другие узлы. Если на них не хватит ресурсов для размещения этих подов, это приведет к частичной или полной недоступности приложений, которые используют эти поды.
Метки и ограничения можно задать как с помощью интерфейсов, поддерживаемых платформой LinxCloud (личный кабинет и Terraform), так и с помощью kubectl. При назначении меток и ограничений учитывайте, что метки и ограничения, заданные с помощью интерфейсов платформы, периодически синхронизируются с кластером Kubernetes (только в одном направлении). При синхронизации метки, заданные с помощью платформы, перезапишут метки и ограничения, которые были заданы с помощью kubectl, если их ключи совпадают. Другие метки и ограничения, которые были заданы с помощью kubectl и не были перезаписаны значениями от платформы, действуют в кластере, но не отображаются, например, в личном кабинете или состоянии (state) Terraform.
Личный кабинет
- Перейдите в личный кабинет LinxCloud.
- Выберите проект и регион, где находится нужный кластер.
- Перейдите в раздел Контейнеры → Кластеры Kubernetes.
- Найдите нужный кластер и группу узлов в нем.
- Раскройте меню группы узлов и выберите пункт Labels и Taints.
- В появившемся окне выполните необходимые действия.
- Действия по управлению метками (labels):
- Добавить новую метку в виде пары ключ/значение.
- Изменить ключ или значение существующей метки.
- Удалить существующую метку.
- Действия по управлению ограничениями (taints):
- Добавить новое ограничение, указав для него эффект и метку пода в виде пары ключ/значение.
- Изменить существующее ограничение.
- Удалить существующее ограничение.
- Действия по управлению метками (labels):
Terraform
- Измените нужный ресурс lcs_kubernetes_node_group в файле конфигурации Terraform :
1...
2
3# Уже описанная конфигурация для группы узлов
4resource "lcs_kubernetes_node_group" "k8s-node-group" {
5 name = "k8s-node-group"
6
7 ...
8
9 # Метки
10
11 # Существующая метка
12 labels {
13 key = "my_awesome_value"
14 value = "my_another_awesome_value"
15 }
16
17 # Новая метка
18 labels {
19 key = "<ключ>"
20 value = "<значение>"
21 }
22
23 # Ограничения
24
25 # Существующее ограничение
26 taints {
27 key = "taint_key_1"
28 value = "taint_value_1"
29 effect = "PreferNoSchedule"
30 }
31
32 # Новое ограничение
33 taints {
34 key = "<ключ>"
35 value = "<значение>"
36 effect = "<эффект>"
37 }
38
39 ...
40}
41
42...
При необходимости измените или удалите существующие метки (labels) и ограничения (taints).
Если блоков
labels
иtaints
еще нет, создайте соответствующие блоки. - Проверьте конфигурационный файл Terraform на корректность:
terraform validate
- Ознакомьтесь с планируемыми изменениями:
terraform plan
- Примените планируемые изменения:
terraform apply
Подробнее в разделе Метки и ограничения.
Настроить параметры обновления
Для повышения скорости сервис контейнеров обновляет сразу несколько worker-узлов в группе. Чтобы максимально сохранить доступность ваших приложений и сервисов во время обновления, укажите максимальный процент недоступных узлов для группы узлов перед обновлением кластера.
Личный кабинет
- Перейдите в личный кабинет LinxCloud.
- Выберите проект и регион, где находится нужный кластер.
- Перейдите в раздел Контейнеры → Кластеры Kubernetes.
- Найдите нужный кластер и группу узлов в нем.
- Раскройте меню группы узлов и выберите пункт Настройки обновления нод.
- В появившемся окне задайте нужный процент.
- Нажмите кнопку Подтвердить.
Terraform
- Добавьте или измените в файле конфигурации Terraform для нужного ресурса lcs_kubernetes_node_group параметр
max_node_unavailable
:1...
2
3# Уже описанная конфигурация для группы узлов
4resource "lcs_kubernetes_node_group" "k8s-node-group" {
5 name = "k8s-node-group"
6
7 ...
8
9 # Процент недоступных узлов
10 max_node_unavailable = <нужный процент, целое число от 1 до 100>
11}
12
13...
- Проверьте конфигурационный файл Terraform на корректность:
terraform validate
- Ознакомьтесь с планируемыми изменениями:
terraform plan
- Примените планируемые изменения:
terraform apply
Подробнее об устройстве процедуры обновления в разделе Обновление версии кластера.
Удалить группу узлов
Эту операцию можно выполнить только когда кластер запущен.
Единственную группу узлов кластера невозможно удалить с помощью личного кабинета. Однако это можно сделать с помощью Terraform.
Личный кабинет
- Перейдите в личный кабинет LinxCloud.
- Выберите проект и регион, где находится нужный кластер.
- Перейдите в раздел Контейнеры → Кластеры Kubernetes.
- Найдите нужный кластер и группу узлов в нем.
- Раскройте меню группы узлов и выберите пункт Удалить.
- Нажмите кнопку Подтвердить.
Terraform
- Удалите нужный ресурс lcs_kubernetes_node_group из файла конфигурации Terraform.
- Проверьте конфигурационный файл Terraform на корректность:
terraform validate
- Ознакомьтесь с планируемыми изменениями:
terraform plan
- Примените планируемые изменения:
terraform apply