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


Настройка подсистемы балансировки нагрузки службы в службе Nexus Kubernetes оператора Azure

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

Необходимые компоненты

Прежде чем продолжить работу с этим руководством, рекомендуется:

  • Ознакомьтесь с кратким руководством по кластеру Nexus Kubernetes, чтобы получить полный обзор и действия.
  • Убедитесь, что выполнены указанные предварительные требования, чтобы обеспечить плавную реализацию руководства.
  • Знание концепций Kubernetes, включая развертывания и службы.
  • Обратитесь к администратору сети, чтобы получить диапазон IP-адресов, который можно использовать для пула IP-адресов подсистемы балансировки нагрузки.

Ограничения

  • Конфигурация пула IP неизменяема: после установки ее нельзя изменить в кластере Nexus Kubernetes.
  • Имена пулов IP-адресов должны начинаться с строчной буквы или цифры и заканчиваться строчным буквой или цифрой.
  • Имена ip-пулов не должны превышать 63 символов, чтобы избежать потенциальных проблем или ограничений.
  • Пулы IP-адресов не должны перекрываться с существующим префиксом POD CIDR, Service CIDR или CNI, чтобы предотвратить конфликты и сетевые проблемы в кластере.

Важно!

Эти инструкции предназначены для создания нового кластера Nexus Kubernetes. Избегайте применения шаблона Bicep к существующему кластеру, так как конфигурация пула IP неизменяема. После создания кластера с конфигурацией пула IP-адресов его нельзя изменить.

Варианты конфигурации

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

Давайте рассмотрим параметры конфигурации пула IP-адресов.

Обязательные параметры

Для конфигурации пула IP-адресов требуется наличие двух полей: addresses и name. Эти поля важны для определения диапазона IP-адресов и идентификации пула.

  • Поле addresses указывает список диапазонов IP-адресов, которые можно использовать для выделения в пуле. Каждый диапазон можно определить как подсеть в формате CIDR. Избегайте использования одного IP-адреса, например /32 для IPv4 и /128 для IPv6.
  • Поле name служит уникальным идентификатором пула IP-адресов. Он помогает связать пул с объявлением BGP (протокол пограничного шлюза), обеспечивая эффективное взаимодействие в кластере.

Примечание.

Чтобы разрешить службе Kubernetes LoadBalancer иметь двойной адрес стека, убедитесь, что конфигурация пула IP-адресов включает как IPv4, так и IPv6 CIDR.

Необязательные параметры

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

  • Поле autoAssign определяет, назначаются ли IP-адреса из пула автоматически. Это поле является типом string со значением Trueпо умолчанию. Его можно задать либо True False на основе ваших предпочтений.
  • Поле onlyUseHostIps управляет использованием IP-адресов, .0 заканчивающимися и .255 в пуле. Включение этого параметра ограничивает использование IP-адресов между .1 и .254 (включительно), за исключением зарезервированных сетевых и широковещательных адресов.

Параметры шаблона Bicep для конфигурации пула IP-адресов

В следующем фрагменте JSON показаны параметры, необходимые для настройки пула IP-адресов в шаблоне Bicep.

"ipAddressPools": {
  "value": [
    {
      "addresses": ["<IP>/<CIDR>"],
      "name": "<pool-name>",
      "autoAssign": "True",  /* "True"/"False" */
      "onlyUseHostIps": "True"  /* "True"/"False" */
    }
  ]
}

Чтобы добавить конфигурацию пула IP-адресов в кластер, необходимо обновить kubernetes-deploy-parameters.json файл, созданный во время быстрого запуска. Включите конфигурацию пула IP-адресов в этот файл в соответствии с нужными параметрами.

После добавления конфигурации пула IP-адресов в файл параметров можно продолжить развертывание шаблона Bicep. Это действие настраивает новый кластер с указанной конфигурацией пула IP-адресов, что позволяет использовать пул IP-адресов в соответствии с указанными параметрами.

Следуя этим инструкциям, вы можете создать кластер Nexus Kubernetes с требуемой конфигурацией пула IP-адресов и воспользоваться преимуществами пула IP-адресов для служб кластера.

Примеры параметров

Этот файл параметров предназначен для использования с шаблоном Bicep краткого руководства Bicep для создания кластера с включенной подсистемой балансировки нагрузки BGP. Он содержит необходимые параметры конфигурации для настройки кластера с функциональностью подсистемы балансировки нагрузки BGP. Используя этот файл параметров с шаблоном Bicep, можно создать кластер с необходимыми возможностями подсистемы балансировки нагрузки BGP.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "kubernetesClusterName":{
      "value": "lb-test-cluster"
    },
    "adminGroupObjectIds": {
      "value": [
        "00000000-0000-0000-0000-000000000000"
      ]
    },
    "cniNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
    },
    "cloudServicesNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
    },
    "extendedLocation": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
    },
    "location": {
      "value": "eastus"
    },
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa AAAAB..."
        },
        {
          "keyData": "ssh-rsa AAAAC..."
        }
      ]
    },
    "ipAddressPools": {
      "value": [
        {
          "addresses": ["<IP>/<CIDR>"],
          "name": "<pool-name>",
          "autoAssign": "True",
          "onlyUseHostIps": "True"
        }
      ]
    }
  }
}

Примечание.

Если вы планируете создать службу DualStack, убедитесь, что пул адресов содержит как CIDR IPv4, так и IPv6 CIDR. Это позволяет одновременно поддерживать адреса IPv4 и IPv6 в конфигурации подсистемы балансировки нагрузки.

Пример. Выделение статических IP-адресов для службы

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

Создание развертывания

kubectl create deployment nginx --image=nginx --port 80

Выделение статических IP-адресов (LoadBalancerIP)

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool1-static \
    --type LoadBalancer \
    --load-balancer-ip <IP from pool-1>

Замените <IP from pool-1> нужным IP-адресом из пула IP-адресов.

Выделение статических IP-адресов (ExternalIP)

kubectl expose deployment nginx \
    --name nginx-clusterip-pool1-static \
    --type ClusterIP \
    --external-ip <IP from pool-1>

Замените <IP from pool-1> нужным IP-адресом из пула IP-адресов.

Пример: выделение IP-адресов для службы из определенного пула IP-адресов

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

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool2-auto \
    --type LoadBalancer \
    --overrides '{"metadata":{"annotations":{"metallb.universe.tf/address-pool":"pool-2"}}}'

Эта команда назначает IP-адрес службе из пула pool-2IP- адресов. При необходимости измените имя пула. Прежде чем попробовать эти примеры, убедитесь, что вы уже создали кластер Nexus Kubernetes с двумя различными пулами IP-адресов. Если этого не сделано, выполните необходимые действия, чтобы создать кластер и настроить пулы IP-адресов соответствующим образом.

Примечание.

Имя пула IP-адресов учитывает регистр. Не забудьте использовать правильный случай при указании имени пула.

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

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