Поделиться через


Использование общедоступной подсистемы балансировки нагрузки уровня "Стандартный" в Служба Azure Kubernetes (AKS)

Azure Load Balancer работает на уровне 4 модели взаимодействия с открытыми системами (OSI), которая поддерживает как входящие, так и исходящие сценарии. Он распределяет входящие потоки, поступающие в интерфейсную часть подсистемы балансировки нагрузки на экземпляры серверного пула.

Общедоступная подсистема балансировки нагрузки, интегрированная с AKS, служит двумя целями:

  • Предоставьте исходящие подключения к узлам кластера в виртуальной сети AKS, преобразуя частный IP-адрес в публичный IP-адрес из части исходящего пула.
  • Предоставление доступа к приложениям через службы Kubernetes типа LoadBalancer, что позволяет легко масштабировать приложения и создавать высокодоступные службы.

В этой статье рассматривается интеграция с общедоступной подсистемой балансировки нагрузки в AKS. Сведения об интеграции с внутренней подсистемой балансировки нагрузки см. в статье "Использование внутренней подсистемы балансировки нагрузки" в AKS.

Предпосылки

  • Azure Load Balancer доступен в двух номерах SKU: "Базовый" и "Стандартный". Номер SKU уровня "Стандартный" используется по умолчанию при создании кластера AKS. Номер SKU ценовой категории “Стандартный” позволяет получить доступ к дополнительным функциям, таким как увеличенный серверный пул, несколько пулов узлов, Зоны доступности, и является безопасным по умолчанию. Это рекомендуемый номер SKU подсистемы балансировки нагрузки для AKS. Дополнительные сведения о номерах SKU "Базовый" и "Стандартный" см. в сравнении SKU Azure Load Balancer.
  • Полный список поддерживаемых заметок для служб Kubernetes с типом LoadBalancerсм. в заметках LoadBalancer.
  • В этой статье предполагается, что у вас есть кластер AKS с Azure Load Balancer ценовой категории Стандартный. Если вам нужен кластер AKS, можно создать его с помощью Azure CLI, Azure PowerShell или портала Azure.

Important

Если вы предпочитаете использовать собственный шлюз, брандмауэр или прокси-сервер для предоставления исходящего подключения, можно пропустить создание исходящего пула подсистемы балансировки нагрузки и соответствующего внешнего IP-адреса с помощью исходящего типа в качестве userDefinedRouting (UDR). Исходящий тип определяет метод исходящего трафика для кластера и по умолчанию для типа LoadBalancer.

Limitations

При создании и администрировании кластеров AKS, поддерживающих подсистему балансировки нагрузки ценовой категории "Стандартный", действуют следующие ограничения.

  • AKS управляет жизненным циклом и операциями узлов агента. Изменение ресурсов IaaS, связанных с узлами агента, не поддерживается. Пример неподдерживаемой операции — внесение вручную изменений в группу ресурсов подсистемы балансировки нагрузки.

  • Необходим по крайней мере один общедоступный IP-адрес или префикс IP-адреса для передачи исходящего трафика из кластера AKS. Общедоступный IP-адрес или префикс IP-адреса требуется для поддержания связи между уровнем управления и узлами агентов, а также для обеспечения совместимости с предыдущими версиями AKS. У вас есть следующие варианты для указания общедоступных IP-адресов или IP-префиксов с помощью балансировщика нагрузки SKU "Стандартный".

    • Предоставьте собственные общедоступные IP-адреса.
    • Предоставьте собственные префиксы общедоступных IP-адресов.
    • Укажите число до 100, чтобы разрешить кластеру AKS создавать несколько общедоступных IP-адресов SKU уровня "Стандартный " в той же группе ресурсов, что и кластер AKS. Эта группа ресурсов обычно именуется с MC_ в начале. AKS назначит общедоступный IP-адрес подсистеме балансировки нагрузки ценовой категории "Стандартный". По умолчанию один общедоступный IP-адрес автоматически создается в той же группе ресурсов, что и кластер AKS, если не указан общедоступный IP-адрес, префикс общедоступного IP-адреса или число IP-адресов. Кроме того, необходимо разрешить общедоступные адреса и не создавать политики Azure, запрещающие создание IP-адресов.
  • Общедоступный IP-адрес, созданный AKS, нельзя повторно использовать в качестве пользовательского общедоступного IP-адреса. Необходимо создать и управлять всеми пользовательскими IP-адресами.

  • При создании кластера AKS можно определить только номер SKU подсистемы балансировки нагрузки. Вы не сможете изменить номер SKU подсистемы балансировки нагрузки после создания кластера AKS.

  • В одном кластере можно использовать только один тип SKU подсистемы балансировки нагрузки (базовый или стандартный).

  • Подсистемы балансировки нагрузки SKU уровня "Стандартный" поддерживают только IP-адреса SKU уровня "Стандартный".

  • Служба приватного канала не поддерживается, если для типа внутреннего пула подсистемы балансировки нагрузки задано nodeIPзначение .

Создание службы подсистемы балансировки нагрузки в AKS

После создания кластера AKS с исходящим типом LoadBalancer (по умолчанию) кластер готов использовать подсистему балансировки нагрузки для предоставления служб.

  • Создайте манифест службы с именем public-svc.yaml, который создает общедоступную службу типа LoadBalancer.

    apiVersion: v1
    kind: Service
    metadata:
      name: public-svc
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: public-app
    

Укажите IP-адрес подсистемы балансировки нагрузки

Если вы хотите использовать определенный IP-адрес с подсистемой балансировки нагрузки, у вас есть два варианта, чтобы указать IP-адрес:

  • Задайте заметки службы (рекомендуется): используйте service.beta.kubernetes.io/azure-load-balancer-ipv4 для IPv4-адреса и service.beta.kubernetes.io/azure-load-balancer-ipv6 для IPv6-адреса.
  • Добавьте свойство LoadBalancerIP в манифест YAML подсистемы балансировки нагрузки: добавьтеService.Spec.LoadBalancerIP свойство в манифест YAML подсистемы балансировки нагрузки. Это поле не рекомендуется использовать после вышестоящего Kubernetes, и оно не поддерживает двойной стек. Текущее использование остается неизменным и существующие службы, как ожидается, будут работать без изменений.

Развертывание манифеста службы подсистемы балансировки нагрузки

  1. Разверните манифест общедоступной службы с помощью kubectl apply и укажите имя манифеста YAML.

    kubectl apply -f public-svc.yaml
    

    Azure Load Balancer настраивается с новым общедоступным IP-адресом, который интерфейсирует новую службу. Так как в Azure Load Balancer может быть несколько интерфейсных IP-адресов, каждая новая служба, развернутая, получает новый выделенный ВНЕШНИй IP-адрес для уникального доступа.

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

    kubectl get service public-svc
    

    При просмотре сведений о службе общедоступный IP-адрес, созданный для этой службы в подсистеме балансировки нагрузки, отображается в столбце EXTERNAL-IP выходных данных. Для изменения <> IP-адреса на фактический общедоступный IP-адрес может потребоваться несколько минут. В следующем примере выходных данных показано успешное создание службы:

    NAMESPACE     NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)         AGE
    default       public-svc    LoadBalancer   10.0.39.110    203.0.113.187   80:32068/TCP    52s
    
  3. Получите более подробные сведения о службе с помощью kubectl describe service команды.

    kubectl describe service public-svc
    

    Следующий пример выходных данных — это сокращенная версия выходных данных после выполнения kubectl describe service. LoadBalancer Ingress показывает внешний IP-адрес, предоставляемый службой. IP-адрес содержит внутренние адреса.

    Name:                        public-svc
    Namespace:                   default
    Labels:                      <none>
    Annotations:                 <none>
    Selector:                    app=public-app
    ...
    IP:                          10.0.39.110
    ...
    LoadBalancer Ingress:        203.0.113.187
    ...
    TargetPort:                  80/TCP
    NodePort:                    32068/TCP
    ...
    Session Affinity:            None
    External Traffic Policy:     Cluster
    ...
    

Следующий шаг