• Русский
  • Дополнительная информация по AWS EKS

    Содержание

    Терминология

    АббревиатураПолное названиеОписание
    eks-clbClassic Load BalancerСтандартный балансировщик нагрузки AWS. Имеет проблемы в некоторых ситуациях и не рекомендуется к использованию.
    eks-nlbNetwork Load BalancerБалансировщик нагрузки AWS уровня 4, выполняющий балансировку на уровне TCP/UDP, подходит для сценариев, требующих более низкоуровневого сетевого контроля.
    eks-albApplication Load BalancerБалансировщик нагрузки AWS уровня 7. По сравнению с eks-nlb, eks-alb может парсить HTTP/HTTPS протоколы и более интеллектуально распределять запросы, подходит для веб-приложений.
    aws-lbAWS Load BalancerБалансировщик нагрузки, установленный в Kubernetes, который может автоматически создавать eks-nlb и eks-alb на основе LoadBalancer Services и Ingress в Kubernetes для удовлетворения потребностей балансировки нагрузки приложений.
    Platform Load Balancer-Собственный балансировщик нагрузки платформы уровня 7.
    Service Annotations-Метаданные, прикрепляемые к объектам в виде пар ключ-значение. Эта дополнительная информация может быть распознана и использована для улучшения и упрощения управления различными аспектами ресурсов Kubernetes. Аннотации могут быть пояснительным текстом без конкретной функциональности, задавать конфигурации или поведение облачного провайдера, либо указывать параметры конфигурации и инструменты. Очень мощная функциональность.

    Важные замечания

    При создании балансировщиков нагрузки рекомендуется вручную настраивать service annotations, чтобы обеспечить корректное использование платформенным балансировщиком нагрузки aws-lb. Если соответствующие service annotations настроены неправильно, платформа по умолчанию будет использовать eks-clb, у которого есть проблемы, связанные с UDP, что может привести к непредвиденным ситуациям.

    Использование aws-lb в EKS для предоставления внешнего доступа контейнерным сетевым балансировщикам нагрузки

    Инструкция по настройке service annotations

    1. В соответствующем кластере выполните следующую команду с помощью kubectl, чтобы найти все Pod в namespace kube-system с именами, содержащими "aws-load":

      kubectl get pod -n kube-system |grep aws-load
    2. Создайте балансировщик нагрузки; подробные шаги создания и параметры смотрите в разделе создания Load Balancer в AWS EKS Service Annotation Instructions.

      • Если команда не возвращает связанных Pod, значит в кластере не установлен AWS Load Balancer Controller. Service annotations не требуются; создавайте балансировщик нагрузки напрямую.

      • Если команда возвращает связанные Pod, значит в кластере установлен AWS Load Balancer Controller. При создании балансировщика нагрузки в соответствующем кластере добавьте следующие service annotations:

        • service.beta.kubernetes.io/aws-load-balancer-type: external //Required

        • service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip //Required

        • service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing // Optional. Добавьте эту аннотацию, если требуется поддержка публичной сети.

    Метод получения адреса доступа

    • При создании контейнерных сетевых балансировщиков нагрузки заполненные service annotations будут установлены на LoadBalancer Service, соответствующий платформенному балансировщику нагрузки.

    • В публичных облаках LoadBalancer Services с соответствующими service annotations будут распознаны облаком и получат назначенные адреса. Платформенный балансировщик нагрузки прочитает этот адрес и установит его в качестве собственного адреса доступа.