Теперь, когда вы развернули свой кластер EKS, вам интересно, что делать дальше? Вот некоторые треки

Доступно множество программ для расширения и улучшения возможностей вашего кластера EKS. Иногда проблема заключается в большом выборе инструментов, и мы теряемся, решая, какой из них установить первым. Цель этой статьи — дать вам краткий список из 5 инструментов для развертывания в вашем новом кластере.

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

Почему Helm Charts?

Helm — менеджер пакетов для Kubernetes, значительно упрощающий развертывание приложений:

Helm помогает вам управлять приложениями Kubernetes — диаграммы Helm помогают определять, устанавливать и обновлять даже самые сложные приложения Kubernetes. https://helm.sh/

Вы можете создать свою диаграмму Helm, чтобы упаковать свое приложение или повторно использовать существующие. Это повторное использование значительно экономит время. Особенно, когда вы начинаете развертывать множество инструментов в своем кластере.

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

Приложения, которые мы представляем, предоставляют официальную и поддерживаемую диаграмму Helm.

1. Автомасштабирование кластера

Одной из главных сильных сторон Kubernetes является масштабируемость. EKS — это управляемый сервис Kubernetes, предоставляемый AWS. AWS управляет узлами плоскости управления, и вы являетесь владельцем рабочих узлов.

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

При создании кластера EKS необходимо определить желаемое, минимальное и максимальное количество рабочих узлов в группах узлов. Хотя это определено, увеличение/уменьшение количества не происходит автоматически.

Kubernetes Cluster AutoScaler — это приложение для установки в вашем кластере, делающее возможным эту автоматизацию. Ниже вы можете понять, как это работает с этой диаграммой:

Он автоматически регулирует размер узлов в вашем кластере Kubernetes:

  • Масштабирование узлов, когда модули не запускаются из-за нехватки ресурсов в кластере.
  • Уменьшайте масштаб узлов, если они недостаточно используются в течение длительного периода времени. Модули автоматически перемещаются на другие существующие узлы. Это позволяет сократить расходы.


2. Контроллер балансировщика нагрузки AWS

NGINX ingress — самый известный контроллер, когда речь идет о том, как выставить ваши приложения. Однако, если вы работаете в полной экосистеме AWS, вас может заинтересовать Контроллер AWS Load Balancer.

Это поможет вам управлять Elastic Load Balancer для вашего кластера EKS:

На следующей диаграмме показаны компоненты AWS, которые создает этот контроллер:

[1]: контроллер отслеживает события входа с сервера API. Когда он находит входящие ресурсы с ожидаемой аннотацией, он запускает создание ресурсов AWS.

[2]: для нового входящего ресурса создается ALB. Это может быть выход в Интернет или внутренний после значения аннотации.

[3]: Целевые группы создаются в AWS для каждой уникальной службы Kubernetes, присутствующей во входящем ресурсе.

[4]: Прослушиватели создаются для каждого порта, указанного в аннотациях вашего входящего ресурса. Если порт не указан, по умолчанию используется 80 или 443. Сертификаты ACM также могут быть прикреплены или обнаружены автоматически с помощью аннотаций.

[5]: Правила создаются для каждого пути, указанного в вашем входящем ресурсе. Это гарантирует, что трафик по определенному пути направляется в правильную службу Kubernetes.

Этот контроллер также выполняет следующие действия:

  • Удаляет компоненты AWS при удалении входящих ресурсов из Kubernetes.
  • Обновляет компоненты AWS при изменении входящих ресурсов в Kubernetes.
  • Собирает список существующих компонентов AWS, связанных с входящим трафиком, при запуске, что позволяет восстановить данные в случае перезапуска контроллера.

Вот пример ресурса Ingress с некоторыми аннотациями для использования контроллера для предоставления ALB:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/subnets: subnet- 05e1c98ed0f5b109e,subnet-07f5bb81f661df61b,subnet-0a4e6232630820516
alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port: 80

После развертывания контроллера в вашем кластере он предоставляет настраиваемые ресурсы (CR). Вы можете использовать существующие целевые группы ALB/NLB и автоматически регистрировать свои приложения внутри с помощью ресурса TargetGroupBinding. Это интересно, если вы хотите предоставить свои балансировщики нагрузки полностью вне Kubernetes.

apiVersion: elbv2.k8s.aws/v1beta1
kind: TargetGroupBinding
metadata:
  name: my-target-group
spec:
  serviceRef:
    name: awesome-service
    port: 80
  targetGroupARN: <arn-to-targetGroup>


3. Обработчик завершения узла AWS

У вас есть выбор типа инстанса, который вы хотите использовать в качестве узла в своем кластере: On-Demand или Spot инстансы EC2.

  • С экземплярами On-Demand вы можете получать вычислительные ресурсы в любое время. Вы платите за время, в течение которого ваш экземпляр находится в рабочем состоянии. В этой ценовой модели вы платите больше всего, потому что можете уйти в любое время.
  • При использовании экземпляров Spot обязательство отменяется. Это отсутствие обязательств приносит вам пользу, поскольку вы можете повторно использовать неиспользуемые и дополнительные вычислительные ресурсы инстансов EC2. Когда вы хотите использовать спотовые инстансы, вы делаете предложение рынку. Если цена на спотовом рынке ниже вашей ставки, вы получаете экземпляр по рыночной цене. Вы платите более низкую рыночную цену, а не цену, которую вы предлагаете. Вы можете регулярно получать экономию от 50 до 90 %.

Самым большим недостатком экземпляра Spot является то, что AWS может отключить ваш экземпляр в любое время. AWS не берет на себя обязательств по предоставлению вам экземпляра. Когда пользователи AWS запрашивают инстансы On-Demand из пула, система распределения выбирает набор спотовых инстансов из пула, которые нужно отключить. Когда это происходит, уведомление о прерывании отправляется отправляется за две минуты до корректного завершения работы спотового экземпляра.

Обработчик завершения узла AWS гарантирует, что плоскость управления Kubernetes надлежащим образом реагирует на события, в результате которых экземпляры EC2 становятся недоступными. Это могут быть следующие события: События технического обслуживания EC2, Спотовые прерывания EC2, Масштабирование ASG, Перебалансировка ASG AZ и завершение EC2 из API или Консоли.

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

Обработчик завершения узла AWS может работать в двух разных режимах: Служба метаданных экземпляра (IMDS) или Обработчик очереди:

  • Монитор службы метаданных экземпляра будет запускать небольшой модуль на каждом узле для выполнения мониторинга, слива или блокировки соответствующего узла.
  • Обработчик очереди будет отслеживать очередь SQS событий из событий Amazon EventBridge. Когда обработчик обнаруживает, что экземпляр выходит из строя, он связывается с Kubernetes API. Он гарантирует, что новая рабочая нагрузка не запланирована, истощает ее и удаляет существующие ресурсы. Процессору очереди требуются разрешения AWS IAM для мониторинга, управления SQS и взаимодействия с API EC2.

Используя AWS Node Termination Handler, вы также можете создать устойчивый и оптимизированный по стоимости кластер EKS с использованием спотовых инстансов.



4. Менеджер сертификатов

Сертификаты часто требуют управления жизненным циклом и обновления. Также важно иметь сертификаты, признанные центром сертификации. Это позволяет избежать получения сообщения об ошибке, что вашему сайту не доверяют.

Cert-manager добавляет сертификаты и издателей сертификатов в качестве типов ресурсов в кластеры Kubernetes. Это упрощает процесс получения, обновления и использования этих сертификатов. Он может выдавать сертификаты из разных источников: Let’s Encrypt, HashiCorp Vault и т. д.

Cert-manager гарантирует, что сертификаты действительны и актуальны. Он пытается обновить сертификаты до истечения срока действия.

В предыдущей статье я объяснил, как использовать безопасный вход с помощью Let’s encrypt с помощью cert-manager.



5. Внешний DNS

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

ExternalDNS синхронизирует открытые сервисы Kubernetes и Ingress с несколькими поставщиками DNS, такими как AWS Route 53 или Google Cloud DNS. Он позволяет автоматизировать подготовку и динамическое управление записями DNS. Он отслеживает аннотации Services и Ingress для создания нужных записей.

Следующая команда добавляет аннотацию ExternalDNS, определяющую желаемое имя хоста для службы NGINX:

kubectl annotate service nginx "external-dns.alpha.kubernetes.io/hostname=nginx.example.org."

Когда аннотация удаляется или Служба удаляется, запись DNS удаляется с помощью ExternalDNS.



Заключение

Мы видели пять приложений, которые можно развернуть с помощью Helm в вашем кластере EKS:

  • Cluster Auto Scaler делает ваш кластер масштабируемым и гибким.
  • Контроллер AWS Load Balancer позволяет предоставлять доступ к ресурсам службы и входящего трафика с помощью Elastic Load Balancer.
  • AWS Node Termination Handler повышает отказоустойчивость ваших приложений. Вы также можете использовать его со спотовыми инстансами EC2 для приложений без сохранения состояния, чтобы сэкономить деньги.
  • Cert-Manager автоматизирует подготовку и обновление сертификатов X509.
  • ExternalDNS взаимодействует с провайдером DNS для динамического управления записями.

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

Ресурсы







Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.