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


Используйте свой собственный подключаемый модуль Container Network Interface (CNI) вместе со Службой Azure Kubernetes (AKS).

Kubernetes по умолчанию не предоставляет систему сетевого интерфейса. Вместо этого сетевые плагины предоставляют эту функцию. Служба Azure Kubernetes (AKS) предоставляет несколько поддерживаемых подключаемых модулей CNI. Сведения о поддерживаемых подключаемых модулях см. в концепциях сети AKS.

Поддерживаемые подключаемые модули удовлетворяют большинству сетевых требований в среде Kubernetes. Расширенные пользователи AKS могут захотеть использовать тот же модуль CNI, что и в локальных средах Kubernetes, или воспользоваться расширенными функциями, доступными в других модулях CNI.

В этой статье показано, как развернуть кластер AKS без предварительно установленного подключаемого модуля CNI. Затем можно установить любой подключаемый модуль CNI от стороннего производителя, который работает в Azure.

Поддержка

Поддержка Майкрософт не может помочь с проблемами, связанными с CNI в кластерах, развернутых с помощью предоставленного пользователем сетевого интерфейса контейнера (BYOCNI). Например, проблемы, связанные с CNI, охватывают большую часть трафика "восток-запад" (модуль-модуль), а также команды вида kubectl proxy и подобные. Если требуется поддержка CNI, используйте поддерживаемый сетевой подключаемый модуль AKS или обратитесь за поддержкой стороннего поставщика подключаемого модуля BYOCNI.

Поддержка по-прежнему предоставляется для проблем, не связанных с CNI.

Предварительные условия

  • Для Azure Resource Manager (ARM) или 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, диапазона адресов pod или диапазона адресов виртуальной сети кластера.
  • Удостоверение кластера, используемое кластером AKS, должно иметь по крайней мере разрешения Network Contributor на подсеть внутри вашей виртуальной сети. Если вы хотите определить пользовательскую роль вместо использования встроенной роли участника сети, требуются следующие разрешения:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • Подсеть, назначенная пулу узлов AKS, не может быть делегированной подсетью.
  • AKS не применяет группы безопасности сети (NSG) к подсети или не изменяет группы безопасности сети, связанные с этой подсетью. Если вы предоставляете свою собственную подсеть и добавляете НСГ, связанные с ней, необходимо убедиться, что правила безопасности в этих НСГ разрешают трафик в пределах диапазона CIDR узла. Дополнительные сведения см. в разделе Группы безопасности сети.

Создание кластера AKS без предварительно установленного подключаемого модуля CNI

  1. Создайте группу ресурсов Azure для кластера AKS с помощью az group create команды.

    az group create --location eastus --name myResourceGroup
    
  2. Создайте кластер AKS с помощью az aks create команды. Передайте параметр --network-plugin со значением параметра none.

    az aks create \
        --location eastus \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --network-plugin none \
        --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.

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

Узнайте больше о сетевом взаимодействии в AKS из следующих статей: