Dela via


Ta med ditt eget CNI-plugin-program (Container Network Interface) med Azure Kubernetes Service (AKS)

Kubernetes tillhandahåller inte något nätverksgränssnittssystem som standard. I stället tillhandahåller nätverksinsticksprogram den här funktionen. Azure Kubernetes Service (AKS) innehåller flera CNI-plugin-program som stöds. Information om plugin-program som stöds finns i begreppen för AKS-nätverk.

Plugin-program som stöds uppfyller de flesta nätverksbehoven i Kubernetes. Avancerade AKS-användare kanske vill ha samma CNI-plugin-program som används i lokala Kubernetes-miljöer eller använda avancerade funktioner som är tillgängliga i andra CNI-plugin-program.

Den här artikeln visar hur du distribuerar ett AKS-kluster utan förinstallerat CNI-plugin-program. Därifrån kan du sedan installera alla CNI-plugin-program från tredje part som fungerar i Azure.

Support

Microsoft-supporten kan inte hjälpa till med CNI-relaterade problem i kluster som distribueras med BYOCNI (Bring your own Container Network Interface). Till exempel skulle CNI-relaterade problem täcka de flesta trafik från öst/väst (podd till podd) tillsammans med kubectl proxy och liknande kommandon. Om du vill ha CNI-relaterad support kan du använda ett AKS-nätverkstillägg som stöds eller söka support från BYOCNI-plugin-programmets tredjepartsleverantör.

Stöd ges fortfarande för icke-CNI-relaterade problem.

Förutsättningar

  • För Azure Resource Manager (ARM) eller Bicep använder du minst mallversion 2022-01-02-preview eller 2022-06-01.
  • För Azure CLI använder du minst version 2.39.0.
  • Det virtuella nätverket för AKS-klustret måste tillåta utgående Internetanslutning.
  • AKS-kluster får inte använda 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16eller 192.0.2.0/24 för Kubernetes-tjänstens adressintervall, poddadressintervall eller klusteradressintervall för virtuella nätverk.
  • Klusteridentiteten som används av AKS-klustret måste ha minst behörighet som nätverksdeltagare i undernätet i det virtuella nätverket. Om du vill definiera en anpassad roll i stället för att använda den inbyggda rollen Nätverksdeltagare krävs följande behörigheter:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • Det undernät som tilldelats AKS-nodpoolen kan inte vara ett delegerat undernät.
  • AKS tillämpar inte nätverkssäkerhetsgrupper (NSG: er) på dess undernät eller ändrar någon av de NSG:er som är associerade med det undernätet. Om du anger ett eget undernät och lägger till NSG:er som är associerade med det undernätet måste du se till att säkerhetsreglerna i NSG:erna tillåter trafik inom nodens CIDR-intervall. Mer information finns i Nätverkssäkerhetsgrupper.

Skapa ett AKS-kluster utan förinstallerat CNI-plugin-program

  1. Skapa en Azure-resursgrupp för ditt AKS-kluster med hjälp av az group create kommandot .

    az group create --location eastus --name myResourceGroup
    
  2. Skapa ett AKS-kluster med kommandot az aks create . Skicka parametern --network-plugin med parametervärdet none.

    az aks create \
        --location eastus \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --network-plugin none \
        --generate-ssh-keys
    

Distribuera ett CNI-plugin-program

När AKS-etableringen är klar är klustret online, men alla noder är i ett NotReady tillstånd, vilket visas i följande exempel:

  $ 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

Nu är klustret redo för installation av ett CNI-plugin-program.

Nästa steg

Läs mer om nätverk i AKS i följande artiklar: