Поиск по сайту:

Как настроить кластер Kubernetes на AWS с помощью Kops


Kops привык максимально легко запускать кластер Kubernetes. Это инструмент командной строки, используемый для создания кластеров Kubernetes. Kops официально поддерживает AWS, где GCP, DigitalOcean и OpenStack находятся в стадии бета-тестирования. Kops также может генерировать файлы Terraform для необходимой конфигурации кластера. С помощью Kops можно не только легко создать кластер, но и изменить, удалить и обновить версию Kubernetes в кластере.

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

Предпосылки

  1. Аккаунт AWS (создайте, если у вас его нет).
  2. Экземпляр EC2 Ubuntu 18.04 (нажмите здесь, чтобы узнать, как создать экземпляр EC2 на AWS ).
  3. Корзина S3 (нажмите здесь, чтобы узнать, как создать корзину S3 на AWS).
  4. Доменное имя (Поиск по запросу «Как купить доменное имя на AWS?\», чтобы понять шаги по созданию домена на AWS).
  5. Роль IAM с достаточными правами администратора (нажмите здесь, чтобы узнать, как создать роль IAM в AWS).

Что мы будем делать?

  1. Войдите в AWS.
  2. Проверьте сегмент S3, роль IAM.
  3. Прикрепите роль IAM к экземпляру.
  4. Установите Kubectl и Kops в экземпляре EC2.
  5. Проверка правил набора записей и размещенной зоны.
  6. Создайте кластер Kubernetes с помощью Kops.
  7. Удалите кластер.

Войти в АВС

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

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

Проверьте корзину S3, роль IAM

Чтобы создать кластер с помощью Kops, нам понадобится корзина S3, в которой Kops будет хранить всю конфигурацию кластера.

Найдите корзину, которую вы хотите использовать для хранения конфигураций Kops.

Убедитесь, что роль IAM, которую вы собираетесь использовать, имеет достаточные/административные разрешения. Kops не нужны права администратора, если вы мало знакомы с AWS IAM и разрешениями и не хотите сталкиваться с какими-либо проблемами доступа, вы можете использовать права администратора.

Прикрепите роль IAM к экземпляру

Получив роль, прикрепите ее к экземпляру EC2, который вы будете использовать для выполнения команд kops. Перейдите в EC2 --> выберите экземпляр EC2 --> нажмите Действия --> Безопасность -- > Изменить роль IAM.

Выберите роль IAM и сохраните изменения.

Установите Kubectl и Kops на экземпляр EC2.

К этому моменту у вас есть корзина S3 и экземпляр EC2 с прикрепленной к нему необходимой ролью. Теперь войдите в экземпляр EC2, который вы будете использовать для создания кластера с помощью Kops.

Следующим шагом будет установка Kubectl на экземпляр EC2.

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

curl -LO "https://dl.k8s.io/release/$(curl -L -s 

curl -LO "https://dl.k8s.io/$(curl -L -s 

echo "$(<kubectl.sha256) kubectl" | sha256sum --check

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

mkdir -p ~/.local/bin/kubectl

mv ./kubectl ~/.local/bin/kubectl

Проверьте версию kubectl с помощью следующей команды.

kubectl version --client

Теперь вы готовы установить Kops на тот же инстанс EC2.

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

kops

curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64

chmod +x kops-linux-amd64

sudo mv kops-linux-amd64 /usr/local/bin/kops

Теперь у вас должны быть копы на сервере.

kops

Проверьте правила набора записей и размещенную зону.

Копсу нужны необходимые записи DNS для создания кластера.

Здесь у меня есть вторая размещенная зона в route53.

Кроме того, я скопировал серверы NS моего SUBDOMAIN в PARENT домен в Route53.

Перейдите в Route53 -- > Размещенные зоны -- > Перейдите к основной размещенной зоне по умолчанию -- > Проверьте набор записей и проверьте его значения.

Создайте кластер Kubernetes с помощью Kops

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

kops get clusters

Приведенная выше команда завершится ошибкой, так как в качестве параметра ей требуется ведро S3.

kops get clusters --state s3://kops.devopslee.com

Поскольку существующих кластеров нет, команда ничего не выведет.

Если вы не хотите указывать имя корзины s3 в качестве параметра команды, вы можете экспортировать его значение в терминале в переменную \KOPS_STATE_STORE\.

export KOPS_STATE_STORE=s3://kops.devopslee.com

На этот раз вам не нужно указывать сегмент S3 в команде.

kops get clusters

Теперь давайте попробуем создать кластер с

  1. 1 главный узел с экземпляром типа t2.medium
  2. 1 рабочий узел с экземпляром типа t2.micro
  3. Зона доступности: us-east-1a,us-east-1b,us-east-1c.

kops create cluster --name kops.devopslee.com --state s3://kops.devopslee.com --cloud aws --master-size t2.medium --master-count 1 --master-zones us-east-1a --node-size t2.micro --node-count 1 --zones us-east-1a,us-east-1b,us-east-1c

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

Проверьте, есть ли у вас пара ключей в вашем экземпляре.

ls -l ~/.ssh/

Если у вас нет пары ключей, вы можете создать ее с помощью следующей команды.

ssh-keygen

На этот раз, если вы снова выполните команду создания, произойдет сбой, поскольку S3 был обновлен предыдущей командой с конфигурацией кластера, даже если это не удалось из-за отсутствия ключа ssh.

kops create cluster --name kops.devopslee.com --state s3://kops.devopslee.com --cloud aws --master-size t2.medium --master-count 1 --master-zones us-east-1a --node-size t2.micro --node-count 1 --zones us-east-1a,us-east-1b,us-east-1c  --ssh-public-key ~/.ssh/id_rsa.pub

Итак, давайте удалим конфигурацию кластера и пересоздадим кластер с ключом ssh.

kops delete cluster --name kops.devopslee.com --state s3://kops.devopslee.com --yes

На этот раз мы передаем открытый ключ ssh при создании кластера.

kops create cluster --name kops.devopslee.com --state s3://kops.devopslee.com --cloud aws --master-size t2.medium --master-count 1 --master-zones us-east-1a --node-size t2.micro --node-count 1 --zones us-east-1a,us-east-1b,us-east-1c  --ssh-public-key ~/.ssh/id_rsa.pub

Сначала будет создана конфигурация кластера.

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

На этот раз вы увидите, что кластер доступен.

kops get cluster

Но ресурсы еще не созданы.

Чтобы немедленно создать ресурсы, нам нужно обновить кластер с --yes в качестве опции команды.

kops update cluster --name kops.devopslee.com --yes

Создание кластера займет некоторое время. Вы можете подтвердить состояние кластера, используя следующую команду «подтвердить».

kops validate cluster --wait 10m

Как только все ресурсы кластера будут созданы, кластер будет готов к использованию.

Как только экземпляры EC2 готовы, kops обновляет зону Hosted с помощью записей A, содержащих IP-адреса мастера.

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

kubectl  get pods

Вы даже можете проверять модули из всех пространств имен.

kubectl  get pods -A

Проверьте узлы в кластере.

kubectl  get nodes

Чтобы получить дополнительные сведения об узлах, используйте в команде параметр -o wide.

kubectl  get nodes -o wide

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

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

kops get cluster

Вам просто нужно выполнить одну команду.

kops delete cluster --name kops.devopslee.com --state s3://kops.devopslee.com --yes

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

Заключение

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