Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Kubernetes по умолчанию не предоставляет систему сетевого интерфейса. Вместо этого сетевые плагины предоставляют эту функцию. Служба Azure Kubernetes (AKS) предоставляет несколько поддерживаемых плагинов сетевого интерфейса контейнеров (CNI). Для получения информации о поддерживаемых плагинах см. раздел Концепции сетевого взаимодействия для приложений в службе Azure Kubernetes.
Поддерживаемые подключаемые модули удовлетворяют большинству сетевых требований в среде Kubernetes. Однако опытные пользователи AKS могут хотеть использовать тот же подключаемый модуль CNI, который они использовали в Kubernetes-средах на локальных серверах. Или эти пользователи могут использовать расширенные функции, доступные в других подключаемых модулях CNI.
В этой статье показано, как развернуть кластер AKS без предварительно установленного подключаемого модуля CNI. После этого можно установить любой CNI плагин, совместимый с Azure.
Поддержка
Служба поддержки Microsoft не может помочь с проблемами, связанными с CNI, в кластерах, развернутых с использованием собственного подключаемого модуля CNI. Например, проблемы, связанные с CNI, охватывают большую часть трафика "восток-запад" (модуль-модуль), а также команды вида kubectl proxy и подобные. Если требуется поддержка CNI, используйте поддерживаемый сетевой подключаемый модуль AKS или обратитесь за поддержкой поставщика подключаемого модуля CNI.
Корпорация Майкрософт по-прежнему предоставляет поддержку проблем, которые не связаны с CNI.
Предварительные условия
- Для Azure Resource Manager или Bicep используйте по крайней мере шаблон версии 2022-01-02-preview или 2022-06-01.
- Для Azure CLI используйте по крайней мере версию 2.39.0.
- Виртуальная сеть для кластера AKS должна разрешать исходящее подключение к Интернету.
- Кластеры AKS не могут использовать
169.254.0.0/16,172.30.0.0/16,172.31.0.0/16или192.0.2.0/24в качестве диапазона адресов для службы Kubernetes, pods или виртуальной сети кластера. - Идентификатор кластера, который использует кластер AKS, должен иметь как минимум разрешения участника сети в подсети в вашей виртуальной сети. Если вы хотите определить пользовательскую роль вместо использования встроенной роли участника сети, необходимы следующие разрешения:
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/read
- Подсеть, назначенная пулу узлов AKS, не может быть делегированной подсетью.
- AKS не применяет группы безопасности сети (NSG) к своей подсети или не изменяет группы безопасности сети, связанные с этой подсетью. Если вы предоставляете собственную подсеть и добавляете группы безопасности (NSG), связанные с ней, необходимо убедиться, что правила безопасности в NSG позволяют трафику в диапазоне маршрутизации без классов (CIDR) узла. Дополнительные сведения см. в разделе Группы безопасности сети.
- AKS не создает таблицу маршрутов в управляемой виртуальной сети.
- Необходимо указать Pod CIDR (диапазон IP-адресов для подов). Плоскость управления AKS использует этот диапазон для маршрутизации внутреннего трафика к подам, даже если назначение IP-адресов будет управляться вашим пользовательским CNI. Если CIDR для pod не указан, обмен данными между контрольной плоскостью и pod может завершиться ошибкой или быть неправильно направленным. Необходимо выбрать CIDR pod, который не конфликтует с любой другой сетью в вашей среде и избегает зарезервированных диапазонов Azure, таких как,
169.254.0.0/16,172.30.0.0/16172.31.0.0/16или192.0.2.0/24. Например, можно использовать диапазон, например10.XX.0.0/16уникальный для кластера. Это гарантирует, что контрольная плоскость может осуществлять маршрутизацию непосредственно к IP-адресам подов на ваших узлах, и перекрытия IP-адресов не произойдет при интеграции с другими сетями или кластерами.
Создание кластера AKS без предварительно установленного подключаемого модуля CNI
Создайте группу ресурсов Azure для кластера AKS с помощью
az group createкоманды.az group create --location eastus --name myResourceGroupСоздайте кластер AKS с помощью
az aks createкоманды. Передайте параметр--network-pluginсо значением параметраnone.az aks create \ --location eastus \ --resource-group myResourceGroup \ --name myAKSCluster \ --network-plugin none \ --pod-cidr "10.10.0.0/16" \ --generate-ssh-keys
Развертывание подключаемого модуля CNI
После завершения подготовки AKS кластер находится в сети. Но все узлы находятся в NotReady состоянии, как показано в следующем примере:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-23902496-vmss000000 NotReady agent 6m9s v1.21.9
$ kubectl get node -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].message'
NAME STATUS
aks-nodepool1-23902496-vmss000000 container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
На этом этапе кластер готов к установке плагина CNI.