Если вы разработчик, вероятно, захотите развернуть контейнеризованные приложения в Kubernetes. Но вопрос в том, как? Почему бы не попробовать AWS EKS CLI?
В этом руководстве вы узнаете, как настроить AWS EKS CLI для создания кластера Kubernetes, чтобы вы могли сосредоточиться на своем коде, а не на управлении инфраструктурой.
Продолжайте читать и начинайте создавать свой кластер уже сегодня!
Предварительные условия
Это руководство будет демонстрацией на практике. Если вы хотите следовать за нами, убедитесь, что у вас есть ПК и учетная запись AWS. Если у вас нет учетной записи AWS, доступна бесплатная учетная запись в бесплатном уровне.
Создание пользователя-администратора
Прежде чем создавать кластер Kubernetes, вы создадите пользователя-администратора. Пользователь-администратор позволяет вам войти в консоль AWS для настройки вашего кластера. Начните это руководство с создания пользователя с правами администратора через консоль AWS.
1. Войдите в свою Консоль AWS и перейдите на панель управления IAM.
Нажмите на Пользователи (левая панель) —> Добавить пользователей (вверхнем правом углу), чтобы начать добавление пользователей.

2. Затем укажите имя пользователя в поле Имя пользователя, здесь используется K8-Admin, установите флажок Ключ доступа – программный доступ и нажмите Далее: Разрешения.
Вы выбираете вариант Ключ доступа – программный доступ, так как он доступен программно. В результате можно использовать приложение для прямого взаимодействия с AWS по выполнению действий.

3. Нажмите вариант Присоединить существующие политики напрямую, установите флажок на политике AdministratorAccess и нажмите Далее: Теги.
Политика AdministratorAccess предоставляет пользователю (K8-Admin) полный доступ к AWS и дополнительно:
- Позволяет пользователю использовать CloudFormation
- Создавать экземпляры EC2 и журналы CloudWatch
- Настроить эластичные балансировщики нагрузки.

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

5. Наконец, проверьте данные пользователя и нажмите Создать пользователя, чтобы завершить создание администратора.

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

Запуск экземпляра EC2
Теперь, когда вы создали K8-Admin, вы можете создать свой первый экземпляр EC2. Вы будете использовать этот экземпляр в качестве главного узла, где запускаете команды для создания кластера.
1. Перейдите на панель управления EC2, нажмите на EC2, затем на Запуск экземпляров в самой правой части страницы. Это перенаправит ваш браузер на страницу, где вы можете выбрать образ машины Amazon (AMI) (шаг два).

2. Затем нажмите на Выбрать рядом (самая правая) с Amazon Linux 2 AMI (HVM) из списка, как показано ниже.
Amazon Linux 2 AMI (HVM) предоставляет ядро Linux 5.10, настроенное для оптимальной производительности последнего поколения оборудования. Этот AMI также имеет множество функций, необходимых для кластеров Kubernetes уровня производства.

3. Оставьте тип экземпляра по умолчанию (t2.micro) и нажмите Далее: Настройка параметров экземпляра, чтобы настроить экземпляр.

4. Включите опцию Автоматическое присвоение публичного IP-адреса и Далее: Добавить хранилище. Эта опция обеспечивает доступ каждого из ваших контейнеров к публичному IP-адресу вашего главного узла Kubernetes и ваших экземпляров EC2.

5. Оставьте по умолчанию (Корень) на странице Добавить хранилище и нажмите Далее: Добавьте теги. Объем Корень необходим для чтения и записи данных из экземпляра.

6. Пропустите добавление тегов и нажмите Далее: Настройте Группу безопасности.

7. Оставьте параметры по умолчанию в группе безопасности, как показано ниже, и нажмите Просмотр и запуск.

8. Проверьте детали запуска экземпляра и нажмите Запуск, чтобы запустить экземпляр. Появится всплывающее окно, где вы можете выбрать существующую пару ключей или создать новую (шаг девять).

9. В диалоговом окне настройте пару ключей следующим образом:
- Выберите Создать новую пару ключей в раскрывающемся списке.
- Выберите RSA как тип пары ключей.
- Укажите предпочтительное имя пары ключей. Но для этого руководства имя пары ключей установлено как my-nvkp.
- Нажмите Скачать пару ключей, затем Запустить экземпляры.

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

Настройка инструмента AWS CLI
Теперь, когда ваш экземпляр запущен, настало время настроить инструменты командной строки (CLI). Использование инструментов командной строки вместе с вашей учетной записью AWS необходимо для создания вашего кластера Kubernetes.
1. На панели управления EC2 отметьте флажок, чтобы выбрать экземпляр, как показано ниже. Нажмите на Подключить, чтобы начать подключение к экземпляру.

2. Затем нажмите кнопку Подключить, чтобы подключиться к экземпляру, который вы ранее выбрали на шаге один.

После того как вы подключитесь к своему экземпляру EC2, ваш браузер перенаправит вас на интерактивный терминал, показанный ниже, как ваша временная SSH-сессия с вашим экземпляром EC2.
Интерактивный терминал позволяет вам подключиться к командной строке и запускать административные команды на вашем новом экземпляре.

3. Выполните команду aws
ниже, чтобы проверить вашу версию CLI.
Как видно из вывода ниже, вы используете версию 1.18.147 на вашем экземпляре Amazon Linux 2, которая устарела. Вам нужно загрузить и установить AWS CLI версии 2+, чтобы гарантировать доступ ко всем функциям Kubernetes (шаг три).

4. Теперь выполните команду curl
ниже, чтобы загрузить инструмент CLI версии 2+ и сохранить его в zip-файле с именем awscliv2.zip
.

5. Выполните следующие команды, чтобы разархивировать загруженный файл и определить, где установлена устаревшая AWS CLI.
Как видно из вывода ниже, устаревшая AWS CLI установлена по пути /usr/bin/aws. Вам нужно обновить этот путь до обновленной версии.

6. Запустите команду ниже, чтобы выполнить следующее и – обновить путь установки AWS CLI на вашем экземпляре:
- Установите обновленные инструменты AWS CLI на ваш экземпляр Amazon Linux 2 (
sudo ./aws/install
). - Укажите каталог (
--install-dir /usr/bin/aws-cli
), в который установить инструменты CLI. Это позволит вам передавать обновленный AWS CLI на другие экземпляры без повторной установки инструментов CLI. - Обновите (
--update
) текущую среду оболочки новым путем для инструментов AWS CLI, если таковой уже есть в вашей текущей среде.

7. Повторно выполните команду aws --version
ниже, чтобы проверить, что обновленный AWS CLI установлен правильно.
Установленная версия AWS CLI – 2.4.7, как показано ниже, которая является последней версией AWS CLI 2.4.7 на момент написания.

8. Затем выполните команду aws configure
, чтобы настроить ваш экземпляр с помощью новых инструментов AWS CLI.
Введите соответствующие значения в диалоговых окнах, как указано ниже:
- AWS Access Key ID [None] – Введите идентификатор ключа доступа, который вы отметили в предыдущем разделе “Создание вашего администраторского пользователя”.
- AWS Secret Access Key [None] – Введите секретный ключ доступа, который вы отметили в предыдущем разделе “Создание вашего администраторского пользователя”.
- Имя региона по умолчанию [None] – Выберите поддерживаемый регион, например, us-east-1.
- Формат вывода по умолчанию [None] – Введите json, поскольку формат JSON является предпочтительным стандартом для использования с Kubernetes.

Настройка инструмента командной строки Amazon EKS (eksctl)
Поскольку ваша цель – создать кластер Kubernetes с помощью AWS EKS CLI, вы также настроите инструмент командной строки Amazon EKS (eksctl). Этот инструмент позволяет создавать и управлять кластерами Kubernetes в Amazon EKS.
1. Установите последнюю версию инструмента командной строки Kubernetes (kubectl) на вашем экземпляре EC2. Этот инструмент позволяет выполнять команды на кластерах Kubernetes.
2. Затем выполните команду curl
ниже, чтобы получить последний релиз eksctl
с GitHub в ваш каталог /tmp в виде файла .tar.gz, затем извлеките содержимое архива в каталог /tmp.
Выполните следующие команды:
- Получите последний релиз
eksctl
с GitHub (--location
) в виде архива .tar.gz ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz"
) - Извлеките содержимое архива в каталог /tmp (
tar xz -C /tmp
), при этом флаг--silent
подавляет вывод прогресса выполнения команды. - Переместите (
sudo mv
) бинарный файл eksctl (/tmp/eksctl
) в путь, где установлен AWS CLI (/usr/bin
)
3. В конце концов выполните команду ниже, чтобы подтвердить успешную установку eksctl
.
Вывод ниже подтверждает, что вы успешно установили eksctl.

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

Создание вашего кластера EKS
Теперь, когда вы настроили eksctl, вы можете создать свой первый кластер EKS с помощью команд eksctl
.
Выполните команду eksctl
ниже, чтобы создать свой первый кластер и выполнить следующие шаги:
- Создайте кластер Kubernetes из трех узлов с именем
dev
, с одним типом узлаt3.micro
и региономus-east-1
. - Укажите минимум один узел (
--nodes-min 1
) и максимум четыре узла (--nodes-max 4
) для этой группы узлов, управляемой EKS. Группа узлов называетсяstandard-workers
. - Создайте группу узлов с именем
standard-workers
и выберите тип машины для группы узловstandard-workers
.

2. Перейдите на вашу панель управления CloudFormation, чтобы увидеть действия, выполненные этой командой. Команда eksctl create cluster
использует CloudFormation для создания инфраструктуры в вашей учетной записи AWS.
Как видно ниже, создается стек CloudFormation с именем eksctl-dev-cluster. Этот процесс может занять 15 минут или дольше.

3. Теперь перейдите на свою панель управления EKS, и вы увидите созданный кластер с именем dev. Нажмите на гиперссылку dev, чтобы получить доступ к панели управления кластером EKS dev.

Ниже вы можете увидеть детали кластера EKS dev, такие как Имя узла, Тип экземпляра, Группа узлов и Статус.

4. Переключитесь на свою панель управления EC2, и вы увидите, что запущены четыре узла, три из которых имеют роль t3.micro в вашей учетной записи AWS (три рабочих узла и один узел-мастер).

5. Наконец, выполните команду ниже, чтобы обновить ваш конфиг kubectl (update-kubeconfig
) с конечной точкой кластера, сертификатом и учетными данными.

Развертывание приложения в кластере EKS
Вы создали свой кластер EKS и подтвердили, что он работает идеально. Но сейчас кластер EKS просто стоит в углу. Для этой демонстрации вы будете использовать кластер EKS, развертывая приложение NGINX.
1. Запустите команду yum
ниже, чтобы установить
git
, принимая все запросы автоматически (-y
) во время установки.

2. Затем выполните команду git clone
ниже, чтобы склонировать файлы конфигурации из репозитория GitHub в ваш текущий каталог. Вы будете использовать эти файлы для создания развертывания NGINX на ваших подах и создания балансировщика нагрузки (ELB).

3. Запустите следующие команды, чтобы перейти в каталог ata-elk
и создать (kubectl apply
) службу для NGINX (./nginx-svc.yaml
).

4. Затем выполните команду kubectl get service
, чтобы проверить статус вашей службы NGINX.
Как видите ниже, тип службы – балансировщик нагрузки, и Kubernetes создал службу (nginx-svc), которая является вашим развертыванием NGINX. Вы также можете увидеть внешний DNS-хостнейм балансировщика нагрузки, созданного EKS, в столбце EXTERNAL IP.
Запишите внешний DNS-хостнейм балансировщика нагрузки, так как вам понадобится он позже для тестирования балансировщика нагрузки.

5. Запустите команду kubectl
ниже, чтобы развернуть поды NGINX.

6. Запустите следующие команды kubectl get
, чтобы проверить статус вашего развертывания NGINX и вашего пода NGINX.
Как видно из вывода ниже, существует три пода вашего развертывания, и все они работают.

7. Затем выполните команду kubectl get node
, чтобы проверить статус ваших рабочих узлов.

8. Теперь выполните команду curl
ниже, чтобы протестировать ваш балансировщик нагрузки. Замените <LOAD_BALANCER_DNS_HOSTNAME>
на имя DNS, которое вы ранее отметили (шаг пять).
Вы увидите приветственную страницу NGINX от службы NGINX, созданной EKS, как показано ниже. Ниже приведенный вывод подтверждает, что ваш балансировщик нагрузки работает корректно и что вы можете получить доступ к вашим подам NGINX.

9. Наконец, для дополнительной проверки скопируйте и вставьте имя DNS балансировщика нагрузки в новую вкладку браузера.
Вы также получите приветственную страницу от NGINX, что указывает на работу вашего приложения.

Тестирование высокодоступного управления Kubernetes
Теперь, когда у вас есть работающий кластер, вы проверите, насколько управляемая плоскость Kubernetes доступна. Время работы вашего приложения зависит от этой функции. Если управляемая плоскость не работает, ваши приложения будут недоступны и не смогут обслуживать пользователей.
С функцией высокодоступного управления Kubernetes вы повышаете доступность вашего приложения. Вы проверите эту функцию, остановив рабочие узлы EKS, и посмотрите, поднимает ли Kubernetes новые узлы для замены отказавших.
1. В вашем панели управления EC2 остановите все экземпляры рабочих узлов EKS, как показано ниже.

2. Затем выполните следующую команду, чтобы проверить состояние рабочего узла.
Вы получите смешанные статусы, такие как Pending, Running и Terminating. Почему? Потому что, когда вы пытаетесь остановить все рабочие узлы, Kubernetes обнаруживает сбой и быстро запускает другой узел.

3. Теперь выполните команду kubectl get pod
, чтобы протестировать функцию управления Kubernetes с высокой доступностью.
Вы можете видеть в выводе, что есть три новых пода (определенных по возрасту) в состоянии Running. Эти новые поды указывают на то, что функция управления Kubernetes с высокой доступностью работает так, как задумано.

4. Выполните нижеприведенную команду kubectl get service
, чтобы перечислить все доступные службы.
Вы можете видеть ниже, что Kubernetes создал новую службу, и теперь имя DNS балансировщика нагрузки отличается. kubectl get service

5. Наконец, скопируйте и вставьте имя DNS балансировщика нагрузки в свой браузер. Вы получите приветственную страницу от NGINX, как вы делали на последнем шаге раздела “Развертывание приложения на кластере EKS”.
Заключение
В ходе этого руководства вы узнали, как создать кластер EKS, развернуть службу NGINX из вашего контейнера и протестировать функциональность плоскости управления с высокой доступностью.
На этом этапе у вас должно быть хорошее понимание того, как создавать кластеры EKS в вашей среде AWS.
Что дальше для вас? Возможно, научиться развертывать приложение NodeJS с использованием Docker и K8s на AWS?