共用方式為


自備容器網路介面 (CNI) 外掛程式搭配 Azure Kubernetes Service (AKS)

Kubernetes 預設不會提供網路介面系統。 而是網路外掛程式提供此功能。 Azure Kubernetes Service (AKS) 提供數個支援的 CNI 外掛程式。 如需所支援外掛程式的相關資訊,請參閱 AKS 網路概念

所支援的外掛程式符合 Kubernetes 中的大部分網路需求。 不過,進階 AKS 使用者可能會想要在內部部署 Kubernetes 環境中所使用的相同 CNI 外掛程式,或使用其他 CNI 外掛程式中可用的進階功能。

本文說明顯示如何部署未預先安裝 CNI 外掛程式的 AKS 叢集。 從這裡,您接著可以安裝任何可在 Azure 中運作的第三方 CNI 外掛程式。

支援

Microsoft 支援無法協助解決使用自備容器網路介面 (BYOCNI) 所部署叢集中的 CNI 相關問題。 例如,CNI 相關問題將涵蓋大部分的東部/西部 (Pod 到 Pod) 流量,以及 kubectl proxy 和類似的命令。 如果您想要 CNI 相關支援,則請使用所支援的 AKS 網路外掛程式,或向 BYOCNI 外掛程式協力廠商尋求 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/16172.30.0.0/16172.31.0.0/16192.0.2.0/24 用於 Kubernetes 服務位址範圍、Pod 位址範圍或叢集虛擬網路位址範圍。
  • AKS 叢集使用的叢集身分識別在虛擬網路內的子網路上至少必須包含 Network Contributor 權限。 如果您想要定義自訂角色,而不使用內建的網路參與者角色,則需要下列權限:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • 指派給 AKS 節點集區的子網路不能是委派子網路
  • AKS 不會將網路安全性群組 (NSG) 套用至其子網路,也不會修改與該子網路相關聯的任何 NSG。 如果您有自己的子網路並新增與該子網路相關聯的 NSG,則必須確保 NSG 中的安全性規則允許節點 CIDR 範圍內的流量。 如需詳細資訊,請參閱網路安全性群組

建立未預先安裝 CNI 外掛程式的 AKS 叢集

  1. 使用 az group create 命令來建立 AKS 叢集的 Azure 資源群組。

    az group create --location eastus --name myResourceGroup
    
  2. 使用 az aks create 命令建立 AKS 叢集。 使用參數值 none,來傳遞 --network-plugin 參數。

    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 的網路功能: