Операции с EKS-кластером#

EKS-кластеры позволяют создавать группы рабочих узлов, которые динамически масштабируются в зависимости от нагрузки. У одного EKS-кластера может быть несколько групп рабочих узлов, для каждой из которой можно задать свои параметры и политики масштабирования. EKS-кластеры имеют AWS-совместимый API, поэтому для управления ими можно использовать стандартные интерфейс командной строки AWS CLI и утилиту boto3.

Особенности использования#

При использовании EKS-кластеров следует учитывать следующие ограничения и особенности их работы:

  • Группе рабочих узлов после её создания нельзя назначить другие группы безопасности. Соответственно, при изменении групп безопасности кластера изменяются только группы безопасности мастер-узлов и Ingress-контроллеров.

  • Если изменить минимальный и максимальный объёмы и другие параметры группы Auto Scaling напрямую в соответствующем разделе, либо изменить шаблон запуска или его версию, то группа рабочих узлов станет неработоспособной (перейдёт в состояние Degraded). Восстановить её работоспособность можно только обратившись в службу поддержки.

  • Развёртывание дополнительных рабочих узлов при масштабировании группы требует времени. При задании слишком высокого порога срабатывания алармов EKS-кластер может оказаться перегружен, так как при достижении критической нагрузки создаваемые рабочие узлы могут быть ещё не готовы.

    Мы рекомендуем задавать порог срабатывания аларма для политики масштабирования на уровне 50-60% от средней загрузки ЦПУ группы рабочих узлов. Это позволит более плавно динамически менять количество рабочих узлов в группе при высокой нагрузке.

  • В EKS-кластерах нельзя отключить автоматическое обновление сертификатов — по умолчанию они всегда включены.

  • EKS-кластер продолжит работать, даже если рабочий узел в какой-либо из его групп рабочих узлов не будет развёрнут корректно. При этом кластер будет находиться в состоянии Не готов до тех пор, пока соответствующий экземпляр не будет удалён или перезапущен вручную.

  • Если при создании кластера были указаны пользовательские данные, то они будут использоваться при запуске всех узлов кластера и групп рабочих узлов.

  • Если в проекте есть свободные Elastic IP, то при расширении группы рабочих узлов эти адреса будут автоматически назначены добавляемым экземплярам. Такое поведение связано с особенностью работы сервиса Auto Scaling, функциональность которого используют группы рабочих узлов.

  • Размер создаваемых дисков должен быть кратен 8 ГиБ, иначе он будет увеличен до ближайшего кратного значения.

Управление EKS-кластером#

Создать EKS-кластер#

Создание кластера можно разделить на три части: подготовка инфраструктуры, установка кластера и создание групп рабочих узлов. Подготовка инфраструктуры состоит в создании нужного количества мастер-узлов заданной конфигурации из подготовленного образа. После успешного старта соответствующих экземпляров запускается процесс установки кластера. При успешном завершении установки статус кластера изменяется на Запущен. После этого вы можете добавить в кластер группу рабочих узлов.

Кластер со статусом Запущен считается готовым к эксплуатации. Любой другой статус кластера говорит о незавершённом процессе его создания, либо о процессе автоматического восстановления при недоступности одного из мастер-узлов в случае отказоустойчивого кластера. Создание кластера предполагает создание экземпляров, установку в них компонентов Kubernetes и опциональную установку дополнительных сервисов. Дополнительные сервисы включают Ingress-контроллер, Docker Registry и EBS-провайдер. При создании кластера с дополнительными сервисами статус Запущен говорит и об их успешной установке.

К2 Облако упрощает использование Kubernetes и позволяет развернуть всю инфраструктуру для управления кластером нажатием одной кнопки. Чтобы создать EKS-кластер, перейдите в раздел Кластеры Kubernetes Кластеры и нажмите Создать. Либо нажмите на стрелку вниз рядом с кнопкой и выберите Создать EKS-кластер.

  1. На шаге Параметры задайте следующие параметры:

    • Имя.

    • Версию Kubernetes, которая будет установлена на все узлы.

    • VPC, в которой будет создан кластер.

    • Опцию Отказоустойчивый кластер. При выборе этой опции будет развёрнут отказоустойчивый кластер из трёх мастер-узлов. На выбор узлы можно распределить по трём зонам доступности или группе размещения в рамках одной зоны доступности, для чего надо выбрать соответствующую опцию (В трёх зонах доступности или В одной зоне доступности). При выходе из строя любого из них кластер продолжит функционировать на оставшихся узлах.

    • Адрес подсети для подов. Вы можете указать блок IP-адресов в нотации CIDR (X.X.X.X/Y), который будет выделен для подсети подов. Если вы не укажете этот параметр, будет выделен диапазон IP-адресов по умолчанию.

    • Адрес подсети для сервисов. Вы можете указать блок IP-адресов в нотации CIDR (X.X.X.X/Y), который будет выделен для подсети сервисов. Если вы не укажете этот параметр, будет выделен диапазон IP-адресов по умолчанию.

  2. На шаге Сеть задайте параметры сети, необходимые для работы кластера:

    • Подсети, в которых будет создан кластер.

    • SSH-ключ для подключения к кластеру.

    • Группы безопасности для регулирования трафика на интерфейсах экземпляров в подсети.

    • Опцию Elastic IP для API-сервера. При выборе опции мастер-узлу будет назначен Elastic IP для внешнего доступа к API-серверу кластера.

  3. На шаге Мастер-узел выберите конфигурацию мастер-узла, на котором будут размещены служебные приложения, необходимые для работы кластера. Эта конфигурация будет применяться ко всем мастер-узлам при выборе опции Отказоустойчивый кластер. Для экземпляра укажите тип, а для диска — тип, размер и IOPS (если это возможно для данного типа).

    Примечание

    Компоненты мастер-узла чувствительны к производительности. Рекомендуем использовать диски с высокой производительностью gp2: Универсальный (SSD), io2: Максимальный (SSD).

  4. На шаге Сервисы вы можете выбрать дополнительные сервисы, которые будут установлены в кластер:

    • Ingress-контроллер для маршрутизации запросов. Для данного сервиса можно выбрать Elastic IP, задать тип экземпляра, на который он может быть установлен, и выбрать параметры диска (тип, размер, IOPS).

    • Docker registry, для которого нужно задать параметры диска (тип, размер, IOPS), в котором будут храниться образы ваших контейнеров.

      Примечание

      Если выбрана опция Отказоустойчивый кластер, то установка сервиса Docker registry невозможна.

    • EBS-провайдер, в котором нужно выбрать учётную запись пользователя К2 Облака для управления дисками.

      Примечание

      Для создания EBS-провайдера в проекте, где планируется создание кластера, необходимо иметь отдельного пользователя с правами Kubernetes EBS Provider user.

  5. На шаге Пользовательские данные можно добавить пользовательские данные для описания операций, которые будут автоматически выполняться при создании узлов кластера. С помощью пользовательских данных можно, например, устанавливать пакеты, создавать и изменять файлы, исполнять shell-скрипты. Для добавления пользовательских данных в форме нужно указать:

    • Тип пользовательских данных. В настоящее время поддерживаются два типа пользовательских данных: x-shellscript и cloud-config.

    • Пользовательские данные. При выборе типа x-shellscript добавьте свой shell-скрипт в это поле. При выборе типа cloud-config добавьте конфигурацию для cloud-config в формате YAML в это поле. Примеры действий, выполняемых cloud-config, и соответствующих конфигураций можно найти в официальной документации cloud-init.

    Указанные пользовательские данные будут применены ко всем узлам кластера.

  6. На шаге Теги вы можете задать ключи и значения тегов, которые будут назначены мастер-узлам кластера Kubernetes.

  7. После выполнения предыдущих шагов нажмите Создать.

    Примечание

    Процесс создания кластера Kubernetes может занять от 5 до 15 минут.

При создании кластера дополнительно устанавливается приложение Cluster-manager, необходимое для корректной работы мониторинга и изменения количества рабочих узлов в кластере. Его удаление может повлечь некорректную работу сервиса Кластеры Kubernetes с кластером, из которого приложение было удалено.

Для корректной работы кластера при его создании автоматически создаётся новая группа безопасности. В группу добавляются следующие правила:

  • разрешающее входящий трафик от интерфейсов, находящихся в этой же группе безопасности;

  • разрешающее весь исходящий IPv4-трафик.

При удалении кластера эта группа безопасности будет удалена.

Получить настройки для подключения к кластеру#

Чтобы скачать настройки, необходимые для конфигурации kubectl:

  1. Перейдите в раздел Кластеры Kubernetes Кластеры.

  2. Найдите в таблице ресурсов кластер, к которому необходимо настроить доступ, и нажмите на имя кластера для перехода на его страницу.

  3. На вкладке Информация нажмите Получить настройки и сохраните настройки.

Задать теги для EKS-кластера#

Чтобы добавить, изменить или удалить теги для EKS-кластера:

  1. Перейдите в раздел Кластеры Kubernetes Кластеры.

  2. Найдите в таблице ресурсов кластер, у которой необходимо отредактировать теги, и нажмите на имя кластера для перехода на его страницу.

  3. Откройте вкладку Теги.

  4. Для добавления тега нажмите Добавить тег и задайте поля Ключ и Значение.

    Для изменения тега отредактируйте требуемые поля (Значение и/или Ключ) у изменяемого тега.

    Для удаления тега нажмите на иконку рядом с ненужным тегом.

    Примечание

    Если ни один тег не был ранее задан, то вы можете добавить тег Name, нажав Добавить тег Name и указав его значение.

    Примечание

    Тег Name можно также изменить на вкладке Информация, отредактировав соответствующее поле.

  5. Нажмите Применить для сохранения изменений.

Удалить кластер#

Внимание

Вместе с кластером будут удалены все связанные с ним группы рабочих узлов и входящие в них экземпляры с дисками.

  1. Перейдите в раздел Кластеры Kubernetes Кластеры и выберите удаляемый EKS-кластер.

  2. Нажмите Удалить.

  3. Подтвердите действие в открывшемся окне.

Группы рабочих узлов#

Группы рабочих узлов используют функциональность сервиса Auto Scaling. Вы можете создавать как статичные, так и автоматически масштабируемые группы рабочих узлов. В случае масштабируемых групп рабочих узлов количество узлов в группе динамически меняется в соответствии с заданной политикой масштабирования.

Вместе с группой рабочих узлов создаётся шаблон запуска, который используется при создании новых экземпляров в группе. Шаблон содержит параметры экземпляра и диска, которые были указаны при создании группы рабочих узлов. Созданный шаблон запуска можно посмотреть в разделе Виртуальные машины Вычислительные ресурсы Шаблоны запуска — он имеет имя nodegroup-<UUID>, а в описании шаблона содержится имя группы.

Примечание

Параметры шаблона запуска нельзя менять, иначе группа рабочих узлов станет неработоспособной.

Создать группу рабочих узлов#

Примечание

Группу рабочих узлов можно добавить, только когда EKS-кластер находится в состоянии Готов.

Чтобы создать группу рабочих узлов:

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, для которого вы хотите создать группу рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов и нажмите Создать.

  3. Задайте параметры рабочих узлов:

    • Имя группы рабочих узлов.

    • Тип экземпляра, на котором будет развёрнут рабочий узел.

    • Размер диска рабочего узла.

    • Подсети, где будут размещаться экземпляры. Для распределения узлов по разным зонам доступности в случае отказоустойчивого кластера вы можете указать подсети в каждой из них. Для выбора доступны только подсети, которые были заданы при создании кластера.

    • SSH-ключ для доступа к экземпляру.

    Нажмите Далее для перехода на следующий шаг.

  4. Задайте параметры масштабирования рабочих узлов:

    • Минимальный объём группы

    • Максимальный объём группы

    • Желаемый объём группы

    При изменении нагрузки желаемый объём группы рабочих узлов будет автоматически меняться в пределах указанных минимального и максимального значения.

    Кроме того, на этом шаге вы можете указать, сколько рабочих узлов может быть недоступно при обновлении EKS-кластера, например, при обновлении версии Kubernetes. Вы можете задать конкретное значение или долю узлов, которые могут быть недоступны.

    Если вам требуется задать метки, taint-политики или теги, нажмите Добавить метки для продолжения настройки.

    Если нет, нажмите Создать для создания рабочей группы.

  5. Вы можете пропустить этот шаг. Чтобы добавить метку, нажмите Добавить метку и задайте ключ и значение метки. Если необходимо задать дополнительные метки, нажмите Добавить.

    Примечание

    Ключ и значение могут состоять из латинских букв, цифр, дефисов - и должны начинаться с буквы или цифры. Ключ может также содержать точки . в качестве разделителя между именами доменов и должен заканчиваться буквой или цифрой. Кроме того, ключ не должен включать имена официальных доменов kubernetes.io или k8s.io и может опционально начинаться с префикса поддомена DNS с косой чертой. Если ключ имеет формат доменного имени (содержит символы . и /), то он не может содержать символ подчёркивания _.

    Ключ и значение могут содержать до 63 символов; значение не может быть пустым.

    Если вам требуется задать taint-политики или теги, то нажмите Добавить taint-политики для продолжения настройки.

    Если нет, нажмите Создать для создания рабочей группы.

  6. Вы можете пропустить этот шаг. Чтобы добавить taint-политику, нажмите Добавить taint-политику и задайте ключ, значение и эффект taint-политики. Подробнее об эффекте taint-политики см. в разделе о добавлении taint-политик. Если необходимо задать дополнительные taint-политики, нажмите Добавить.

    Примечание

    Ключ и значение могут состоять из латинских букв, цифр, дефисов - и должны начинаться с буквы или цифры. Ключ может также содержать точки . в качестве разделителя между именами доменов и должен заканчиваться буквой или цифрой. Кроме того, ключ может опционально начинаться с префикса поддомена DNS с косой чертой. Если ключ имеет формат доменного имени (содержит символы . и /), то он не может содержать символ подчёркивания _.

    Ключ и значение могут содержать до 63 символов; значение может быть пустым.

    Если вам требуется задавать теги, то нажмите Добавить теги для продолжения настройки.

    Если нет, нажмите Создать для создания рабочей группы.

  7. Чтобы добавить тег для группы рабочих узлов, нажмите Добавить тег и задайте ключ и значение тега. Если необходимо задать дополнительные теги, нажмите Добавить тег.

    Всем узлам группы при их создании по умолчанию назначаются теги с ключами Name и nodegroup и значениями nodegroup-<имя группы>-worker и <имя группы>, соответственно.

  8. Для создания группы рабочих узлов нажмите Создать.

Изменить параметры масштабирования#

Вы можете изменить параметры масштабирования для группы рабочих узлов. Чтобы число рабочих узлов в группе менялось динамически, необходимо настроить и активировать политику масштабирования для соответствующей группы Auto Scaling.

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, к которому относится группа рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов, выберите группу в таблице ресурсов и нажмите Изменить.

  3. В открывшемся окне поменяйте параметры масштабирования:

    • Минимальный объём группы

    • Максимальный объём группы

    • Желаемый объём группы

    Кроме того, вы можете изменить метод расчёта для определения того, сколько узлов может быть недоступно при обновлении EKS-кластера:

    • Абсолютное число

    • Процентное отношение

    и/или изменить их предельное значение.

  4. После внесения всех необходимых изменений нажмите Сохранить.

Настроить политику масштабирования#

Политика масштабирования выполняется при срабатывании аларма и позволяет динамически менять число рабочих узлов в группе в зависимости от текущей нагрузки.

Внимание

Для настройки политики масштабирования и алармов пользователь должен иметь права Auto Scaling administrator.

Как использовать политики масштабирования, подробно описано в документации Auto Scaling. Доступ к управлению политиками масштабирования можно получить с вкладки Информация на странице группы рабочих узлов, нажав Политики. Либо вы можете напрямую открыть вкладку Политики на странице соответствующей группы Auto Scaling.

В качестве примера ниже описано, как создать политику масштабирования для группы рабочих узлов.

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, к которому относится группа рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов и нажмите на имя группы в таблице ресурсов для перехода на её страницу.

  3. На вкладке Информация нажмите Политики для перехода на страницу группы Auto Scaling, соответствующей группе рабочей узлов.

  4. Нажмите Создать и задайте необходимые параметры:

    • Тип — Тип политики. Пока поддерживается только тип SimpleScaling и его нельзя изменить.

    • Имя — Имя политики. Должно быть уникальным в пределах соответствующей группы Auto Scaling.

    • Cooldown — Время, по прошествии которого возможно повторное выполнение политики.

    • Действие — Действие, выполняемое при срабатывании аларма.

    • Экземпляры — Количество добавляемых или удаляемых из группы экземпляров. Данный параметр доступен при выборе действий Добавить экземпляры, Удалить экземпляры и Установить объём равным.

    • Доля, в процентах — Процент, на который изменяется объём группы. Данный параметр доступен только при выборе действия Увеличить объём в процентах или Уменьшить объём в процентах.

    • Количество экземпляров, не менее — Количество экземпляров, на которое изменится объём группы, если рассчитанное по процентной доле число экземпляров окажется равным нулю. Данный параметр доступен только при выборе действия Увеличить объём в процентах или Уменьшить объём в процентах.

  5. Нажмите Создать

Для автоматического выполнения политики масштабирования необходимо создать аларм для выбранной метрики и привязать к нему политику масштабирования. Как создать аларм для группы Auto Scaling и назначить ему политику, описано в документации на алармы.

Добавить метки#

Чтобы добавить метки для узлов в группе рабочих узлов:

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, к которому относится группа рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов и нажмите на имя группы в таблице ресурсов для перехода на её страницу.

  3. Перейдите на вкладку Метки и нажмите Добавить.

  4. Задайте ключ и значение метки.

  5. Если необходимо добавить другие метки, повторите предыдущие два шага.

  6. Для назначения меток нажмите Применить.

Добавить taint-политику#

Чтобы добавить политику ограничений для рабочих узлов:

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, к которому относится группа рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов и нажмите на имя группы в таблице ресурсов для перехода на её страницу.

  3. Перейдите на вкладку Taint-политики и нажмите Добавить.

  4. Задайте ключ, значение и эффект taint-политики. Политики могут иметь следующий эффект:

    • NoSchedule — Планировщик не размещает на рабочем новые поды, которые не совместимы с taint-политикой.

    • NoExecute — Планировщик удаляет не совместимые с taint-политикой поды с рабочего узла, если они уже выполняются на узле, и не размещает такие новые поды на этом узле.

    • PreferNoSchedule — По возможности планировщик не размещает на рабочем узле новые поды, которые не совместимы с taint-политикой.

  5. Если необходимо добавить другие taint-политики, повторите предыдущие два шага.

  6. Для применения политик нажмите Применить.

Добавить тег#

Чтобы добавить тег для группы рабочих узлов:

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, к которому относится группа рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов и нажмите на имя группы в таблице ресурсов для перехода на её страницу.

  3. Перейдите на вкладку Теги и нажмите Добавить.

  4. Задайте ключ и значение тега.

  5. Если необходимо добавить другие теги, повторите предыдущие два шага.

  6. Для назначения тегов нажмите Применить.

Удалить группу рабочих узлов#

Примечание

Вместе с группой рабочих узлов будут удалены все входящие в неё узлы. При удалении соответствующих экземпляров будут удалены также диски с данными.

  1. Перейдите в раздел Кластеры Kubernetes Кластеры, выберите EKS-кластер, к которому относится группа рабочих узлов, и нажмите на имя кластера для перехода на его страницу.

  2. Откройте вкладку Группы рабочих узлов и выберите удаляемую группу в таблице ресурсов.

  3. Нажмите Удалить.

  4. Подтвердите действие в открывшемся окне.