Требования к планированию IP-адресов
Область применения: Локальная версия Azure, версия 23H2
Планирование IP-адресов для AKS, включенное Azure Arc, включает проектирование сети, которая поддерживает приложения, пулы узлов, сети pod, обмен данными о службах и внешний доступ. В этой статье рассматриваются некоторые ключевые аспекты эффективного планирования IP-адресов и минимальное количество IP-адресов, необходимых для развертывания AKS в рабочей среде. Перед чтением этой статьи ознакомьтесь с основными понятиями и требованиями к сети AKS.
Планирование простых IP-адресов для кластеров и приложений Kubernetes
В следующем сценарии вы зарезервируете IP-адреса из одной сети для кластеров и служб Kubernetes. Этот пример является самым простым и простым сценарием назначения IP-адресов.
Требование IP-адреса | Минимальное количество IP-адресов | Как и где сделать это резервирование |
---|---|---|
IP-адреса виртуальных машин AKS Arc | Зарезервируйте один IP-адрес для каждого рабочего узла в кластере Kubernetes. Например, если вы хотите создать 3 пула узлов с 3 узлами в каждом пуле узлов, вам потребуется 9 IP-адресов в пуле IP-адресов. | Резервируйте IP-адреса через пулы IP-адресов в логической сети виртуальной машины Arc. |
IP-адреса обновления версии AKS Arc K8s | Так как AKS Arc выполняет последовательное обновление, зарезервировать один IP-адрес для каждого кластера AKS Arc для операций обновления версий Kubernetes. | Резервируйте IP-адреса через пулы IP-адресов в логической сети виртуальной машины Arc. |
IP-адрес плоскости управления | Зарезервируйте один IP-адрес для каждого кластера Kubernetes в вашей среде. Например, если вы хотите создать 5 кластеров в общей сложности, зарезервировать 5 IP-адресов, по одному для каждого кластера Kubernetes. | Резервируйте IP-адреса через пулы IP-адресов в логической сети виртуальной машины Arc. |
IP-адреса подсистемы балансировки нагрузки | Количество зарезервированных IP-адресов зависит от модели развертывания приложения. В качестве отправной точки можно зарезервировать один IP-адрес для каждой службы Kubernetes. | Резервируйте IP-адреса в той же подсети, что и логическая сеть виртуальной машины Arc, но за пределами пула IP-адресов. |
Пример пошагового руководства по резервированию IP-адресов для кластеров и приложений Kubernetes
Джейн — это ИТ-администратор, который только начинается с AKS, включенного в Azure Arc. Джейн хочет развернуть два кластера Kubernetes: кластер Kubernetes A и кластер Kubernetes B в локальном кластере Azure. Джейн также хочет запустить приложение для голосования поверх кластера A. Это приложение содержит три экземпляра интерфейсного пользовательского интерфейса, работающего в двух кластерах и одном экземпляре серверной базы данных. Все кластеры и службы AKS выполняются в одной сети с одной подсетью.
- Кластер Kubernetes A имеет 3 узла уровня управления и 5 рабочих узлов.
- Кластер Kubernetes B имеет 1 узел уровня управления и 3 рабочих узла.
- 3 экземпляра интерфейсного пользовательского интерфейса (порт 443).
- 1 экземпляр серверной базы данных (порт 80).
На основе предыдущей таблицы Джейн должна зарезервировать 19 IP-адресов в подсети Джейн:
- 8 IP-адресов для виртуальных машин узла AKS Arc в кластере A (один IP-адрес на виртуальную машину узла K8s).
- 4 IP-адреса для виртуальных машин узла AKS Arc в кластере B (один IP-адрес на виртуальную машину узла K8s).
- 2 IP-адреса для выполнения операции обновления AKS Arc (один IP-адрес для кластера AKS Arc).
- 2 IP-адреса для плоскости управления AKS Arc (один IP-адрес для кластера AKS Arc)
- 3 IP-адреса для службы Kubernetes (один IP-адрес для каждого экземпляра внешнего пользовательского интерфейса, так как все они используют один и тот же порт. Серверная база данных может использовать любой из трех IP-адресов, если он использует другой порт).
Продолжая использовать этот пример и добавив его в следующую таблицу, вы получите следующее:
Параметр | Число IP-адресов | Как и где сделать это резервирование |
---|---|---|
Виртуальные машины AKS Arc, обновления версий K8s и IP-адрес плоскости управления | Резервировать 16 IP-адресов | Сделайте это резервирование с помощью пулов IP-адресов в локальной логической сети Azure. |
IP-адреса подсистемы балансировки нагрузки | 3 IP-адрес для служб Kubernetes для приложения для голосования Джейн. | Эти IP-адреса используются при установке подсистемы балансировки нагрузки в кластерЕ A. Вы можете использовать расширение MetalLB Arc или использовать собственный сторонний балансировщик нагрузки. Убедитесь, что этот IP-адрес находится в той же подсети, что и логическая сеть Arc, но за пределами пула IP-адресов, определенного в логической сети виртуальной машины Arc. |
Примеры команд CLI для резервирования IP-адресов для кластеров и приложений Kubernetes
В этом разделе описывается набор команд Джейн для ее сценария. Сначала создайте логическую сеть с пулом IP-адресов с не менее 16 IP-адресов. Мы создали пул IP-адресов с 20 IP-адресами, чтобы предоставить возможность масштабирования в день N. Подробные сведения о параметрах в логических сетях см. в следующем разделе az stack-hci-vm network lnet create
:
$ipPoolStart = "10.220.32.18"
$ipPoolEnd = "10.220.32.37"
az stack-hci-vm network lnet create --subscription $subscription --resource-group $resource_group --custom-location $customLocationID --name $lnetName --vm-switch-name $vmSwitchName --ip-allocation-method "Static" --address-prefixes $addressPrefixes --gateway $gateway --dns-servers $dnsServers --ip-pool-start $ipPoolStart --ip-pool-end $ipPoolEnd
Затем создайте кластер AKS Arc с предыдущей логической сетью:
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $lnetName --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys
Теперь вы можете включить подсистему балансировки нагрузки MetalLB с пулом IP-адресов из 3 IP-адресов в той же подсети, что и логическая сеть виртуальной машины Arc. Вы можете добавить дополнительные пулы IP-адресов позже, если приложению требуется увеличение. Подробные требования см. в обзоре расширения MetalLB Arc.
az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.Kubernetes/connectedClusters/metallb-demo --addresses 10.220.32.47-10.220.32.49 --advertise-mode ARP
Рекомендации по LNETs для кластеров AKS и виртуальных машин Arc
Логические сети в локальной среде Azure используются кластерами AKS и виртуальными машинами Arc. Логические сети можно настроить одним из следующих способов:
- Совместное использование логической сети между ВИРТУАЛЬНЫми машинами AKS и Arc.
- Определите отдельные логические сети для кластеров AKS и виртуальных машин Arc.
Совместное использование логической сети между виртуальными машинами AKS и Arc в Azure Local обеспечивает упрощенное взаимодействие, экономию затрат и упрощенное управление сетями. Однако этот подход также представляет потенциальные проблемы, такие как состязание ресурсов, риски безопасности и сложность устранения неполадок.
Критерии | Общий доступ к логической сети | Определение отдельных логических сетей |
---|---|---|
Сложность конфигурации | Упрощенная конфигурация с одной сетью, что снижает сложность настройки. | Более сложная настройка, так как необходимо настроить несколько логических сетей для виртуальных машин и кластеров AKS. |
Масштабируемость | Возможные ограничения масштабируемости, так как виртуальные машины Arc и кластеры AKS используют сетевые ресурсы. | Более масштабируемый, так как сетевые ресурсы разделены и могут масштабироваться независимо. |
Управление политиками сети | Проще управлять одним набором политик сети, но труднее изолировать рабочие нагрузки. | Проще изолировать рабочие нагрузки, так как отдельные политики можно применять для каждой логической сети. |
Вопросы безопасности | Повышенный риск междоменийных уязвимостей, если он не был должным образом сегментирован. | Повышение безопасности по мере того, как каждая сеть может быть сегментирована и изолирована более строго. |
Влияние сбоев сети | Сбой в общей сети может повлиять одновременно на виртуальные машины AKS и Arc. | Сбой в одной сети влияет только на рабочие нагрузки в этой сети, что снижает общий риск. |
Выделение диапазона IP-адресов для POD CIDR и CIDR службы
В этом разделе описываются диапазоны IP-адресов, используемые Kubernetes для обмена данными pod и служб в кластере. Эти диапазоны IP-адресов определяются во время процесса создания кластера AKS и используются для назначения уникальных IP-адресов модулям pod и службам в кластере.
CiDR сети Pod
CiDR сети Pod — это диапазон IP-адресов, используемых Kubernetes для назначения уникальных IP-адресов отдельным модулям pod, работающим в кластере Kubernetes. Каждый модуль pod получает собственный IP-адрес в этом диапазоне, позволяя модулям pod взаимодействовать друг с другом и службами в кластере. В AKS IP-адреса pod назначаются через CNI Calico в режиме VXLAN. VXLAN Calico помогает создавать сети наложения, где IP-адреса модулей pod (из сети CIDR pod) виртуализированы и туннелизируются через физическую сеть. В этом режиме каждый модуль pod назначает IP-адрес из CIDR сети pod, но этот IP-адрес не может быть напрямую routable в физической сети. Вместо этого он инкапсулируется в сетевых пакетах и отправляется через базовую физическую сеть для достижения целевого модуля pod на другом узле.
AKS предоставляет значение по умолчанию 10.244.0.0/16 для ciDR сети pod. AKS поддерживает настройки для CIDR сети pod. При создании кластера AKS можно задать собственное значение с помощью --pod-cidr
параметра. Убедитесь, что диапазон IP-адресов CIDR достаточно велик, чтобы разместить максимальное количество модулей pod на узел и в кластере Kubernetes.
CIDR сети служб
CiDR сети служб — это диапазон IP-адресов, зарезервированных для служб Kubernetes, таких как LoadBalancers, ClusterIP и NodePort в кластере. Kubernetes поддерживает следующие типы служб:
- ClusterIP: тип службы по умолчанию, предоставляющий службу в кластере. IP-адрес, назначенный из сети CIDR службы, доступен только в кластере Kubernetes.
- NodePort: предоставляет службу по определенному порту на IP-адресе каждого узла. ClusterIP по-прежнему используется внутренне, но внешний доступ осуществляется через IP-адреса узлов и определенный порт.
- LoadBalancer: этот тип создает подсистему балансировки нагрузки, управляемой поставщиком облачных поставщиков, и предоставляет службу внешним образом. Поставщик облачных служб обычно управляет внешним назначением IP-адресов, а внутренний ClusterIP остается в сети CIDR службы.
AKS предоставляет значение по умолчанию 10.96.0.0/12 для CIDR сети служб. AKS не поддерживает настройки для ciDR сети служб сегодня.
Следующие шаги
Создание логических сетей для кластеров Kubernetes в Локальной среде Azure версии 23H2