Как создать кластер Kubernetes с помощью AWS EKS CLI

Если вы разработчик, вероятно, захотите развернуть контейнеризованные приложения в Kubernetes. Но вопрос в том, как? Почему бы не попробовать AWS EKS CLI?

В этом руководстве вы узнаете, как настроить AWS EKS CLI для создания кластера Kubernetes, чтобы вы могли сосредоточиться на своем коде, а не на управлении инфраструктурой.

Продолжайте читать и начинайте создавать свой кластер уже сегодня!

Предварительные условия

Это руководство будет демонстрацией на практике. Если вы хотите следовать за нами, убедитесь, что у вас есть ПК и учетная запись AWS. Если у вас нет учетной записи AWS, доступна бесплатная учетная запись в бесплатном уровне.

Создание пользователя-администратора

Прежде чем создавать кластер Kubernetes, вы создадите пользователя-администратора. Пользователь-администратор позволяет вам войти в консоль AWS для настройки вашего кластера. Начните это руководство с создания пользователя с правами администратора через консоль AWS.

1. Войдите в свою Консоль AWS и перейдите на панель управления IAM.

Нажмите на Пользователи (левая панель) —> Добавить пользователей (вверхнем правом углу), чтобы начать добавление пользователей.

Initializing User Creation

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

Вы выбираете вариант Ключ доступа – программный доступ, так как он доступен программно. В результате можно использовать приложение для прямого взаимодействия с AWS по выполнению действий.

Configuring User Details

3. Нажмите вариант Присоединить существующие политики напрямую, установите флажок на политике AdministratorAccess и нажмите Далее: Теги.

Политика AdministratorAccess предоставляет пользователю (K8-Admin) полный доступ к AWS и дополнительно:

Setting up AdministratorAccess policies

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

Skipping the tags screen

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

Creating the admin user

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

Previewing the admin user keys

Запуск экземпляра EC2

Теперь, когда вы создали K8-Admin, вы можете создать свой первый экземпляр EC2. Вы будете использовать этот экземпляр в качестве главного узла, где запускаете команды для создания кластера.

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

Launching an EC2 Instance

2. Затем нажмите на Выбрать рядом (самая правая) с Amazon Linux 2 AMI (HVM) из списка, как показано ниже.

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

Selecting Amazon Linux 2 AMI (HVM)

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

Previewing the instance type

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

Configuring instance details

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

Configuring the storage

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

Previewing the tags

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

Previewing the Security Group

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

Launching an instance

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

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

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

Previewing the newly-created instance

Настройка инструмента AWS CLI

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

1. На панели управления EC2 отметьте флажок, чтобы выбрать экземпляр, как показано ниже. Нажмите на Подключить, чтобы начать подключение к экземпляру.

Connecting to the Ec2 instance.

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

Connecting to the instance

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

Интерактивный терминал позволяет вам подключиться к командной строке и запускать административные команды на вашем новом экземпляре.

Previewing the interactive terminal

3. Выполните команду aws ниже, чтобы проверить вашу версию CLI.

aws --version

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

Checking the AWS CLI version

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

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 
Downloading the CLI tool v2+

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

unzip awscliv2.zip
which aws

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

Updating outdated AWS CLI

6. Запустите команду ниже, чтобы выполнить следующее и – обновить путь установки AWS CLI на вашем экземпляре:

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

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

aws --version

Установленная версия AWS CLI – 2.4.7, как показано ниже, которая является последней версией AWS CLI 2.4.7 на момент написания.

Checking the AWS CLI updated version

8. Затем выполните команду aws configure, чтобы настроить ваш экземпляр с помощью новых инструментов AWS CLI.

aws configure

Введите соответствующие значения в диалоговых окнах, как указано ниже:

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

Настройка инструмента командной строки 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)
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/bin

3. В конце концов выполните команду ниже, чтобы подтвердить успешную установку eksctl.

eksctl version

Вывод ниже подтверждает, что вы успешно установили eksctl.

Checking the eksctl CLI tool version

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

eksctl --help
Previewing the eksctl help page

Создание вашего кластера 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.
eksctl create cluster --name dev --version 1.21 --region us-east-1 --nodegroup-name standard-workers --node-type t3.micro --nodes 3 --nodes-min 1 --nodes-max 4 --managed
Provisioning your EKS Cluster

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

Как видно ниже, создается стек CloudFormation с именем eksctl-dev-cluster. Этот процесс может занять 15 минут или дольше.

Previewing the eksctl-dev-cluster stack.

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

Navigating to the dev EKS Cluster dashboard.

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

Previewing the dev EKS Cluster dashboard.

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

Previewing the EC2 dashboard.

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

aws eks update-kubeconfig --name dev --region us-east-1
Updating kubectl config

Развертывание приложения в кластере EKS

Вы создали свой кластер EKS и подтвердили, что он работает идеально. Но сейчас кластер EKS просто стоит в углу. Для этой демонстрации вы будете использовать кластер EKS, развертывая приложение NGINX.

1. Запустите команду yum ниже, чтобы установить git, принимая все запросы автоматически (-y) во время установки.

sudo yum install -y git
Installing Git

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

git clone https://github.com/Adam-the-Automator/aws-eks-cli.git
Cloning the configuration files

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

# Перейти в каталог ata-elk
cd ata-elk
# Применить конфигурацию в ./nginx-svc.yaml к поду
kubectl apply -f ./nginx-svc.yaml
Creating a service for NGINX

4. Затем выполните команду kubectl get service, чтобы проверить статус вашей службы NGINX.

kubectl get service

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

Запишите внешний DNS-хостнейм балансировщика нагрузки, так как вам понадобится он позже для тестирования балансировщика нагрузки.

Checking the status of your NGINX

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

kubectl apply -f ./nginx-deployment.yaml
Deploying the NGINX pods

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

kubectl get deployment
kubectl get pod

Как видно из вывода ниже, существует три пода вашего развертывания, и все они работают.

Checking the status of the NGINX deployment and pods

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

kubectl get node
Check the status of your worker nodes

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

curl "<LOAD_BALANCER_DNS_HOSTNAME>"

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

Checking your load balancer

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

Вы также получите приветственную страницу от NGINX, что указывает на работу вашего приложения.

Checking your load balancer with a browser

Тестирование высокодоступного управления Kubernetes

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

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

1. В вашем панели управления EC2 остановите все экземпляры рабочих узлов EKS, как показано ниже.

Stopping all of your EKS worker node instances

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

kubectl get node

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

Checking the status of the worker node

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

kubectl get pod

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

Checking the status of the pods

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

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

kubectl get service
Kubernetes has created a new service

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

Заключение

В ходе этого руководства вы узнали, как создать кластер EKS, развернуть службу NGINX из вашего контейнера и протестировать функциональность плоскости управления с высокой доступностью.

На этом этапе у вас должно быть хорошее понимание того, как создавать кластеры EKS в вашей среде AWS.

Что дальше для вас? Возможно, научиться развертывать приложение NodeJS с использованием Docker и K8s на AWS?

Source:
https://adamtheautomator.com/aws-eks-cli/