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


Использование собственного подключаемого модуля 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, должно иметь по крайней мере разрешения Участник сетей в подсети виртуальной сети. Если вы хотите определить пользовательскую роль вместо использования встроенной роли участника сети, требуются следующие разрешения:
    • 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 из следующих статей: