Distribuera Azure Virtual Network container network interface-pluginet

Azure Virtual Network containernätverksgränssnittet (CNI)-tillägget installeras i en Azure-virtuell maskin och tillför virtuella nätverksfunktioner till Kubernetes Pods och Docker-containrar. För att lära dig mer om pluginet, se Aktivera containrar för att använda Azure Virtual Network-funktioner. Dessutom kan pluginet användas med Azure Kubernetes Service (AKS) genom att välja alternativet Advanced Networking, som automatiskt placerar AKS-containrar i ett virtuellt nätverk.

Distribuera plug-in för Azure Container Service-Engine Kubernetes-kluster

Azure Container Service-Engine distribuerar ett Kubernetes-kluster med en Azure Resource Manager mall. Klusterkonfigurationen specificeras i en JSON-fil som skickas till verktyget vid generering av mallen. För att lära dig mer om hela listan över stödda klusterinställningar och deras beskrivningar, se Microsoft Azure Container Service Engine - Cluster Definition. Pluginet är standardpluginet för nätverk för kluster skapade med Azure Container Service-Engine. Följande nätverkskonfigurationsinställningar är viktiga vid konfiguration av plugin:

Setting Description
firstConsecutiveStaticIP IP-adressen som tilldelas huvudnoden. Denna inställning är obligatorisk.
clusterSubnet under kubernetesConfig CIDR för det virtuella nätverkssubnätet där klustret är distribuerat, och från vilket IP-adresser tilldelas Pods
vnetSubnetId under masterProfile Specificerar Azure Resource Manager-resurs-ID för det subnät där klustret ska distribueras
vnetCidr CIDR för det virtuella nätverket där klustret är utplacerat
max-Pods under kubeletConfig Maximalt antal Pods på varje agent-virtuell maskin. För pluginet är standardvärdet 30. Du kan specificera upp till 250

Exempelkonfiguration

Json-exemplet som följer gäller för ett kluster med följande egenskaper:

  • En huvudnod och två agentnoder

  • Distribuerad i ett subnät kallat KubeClusterSubnet (10.0.0.0/20), med både huvud- och agentnoder som finns där.

{
  "apiVersion": "vlabs",
  "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes",
      "kubernetesConfig": {
        "clusterSubnet": "10.0.0.0/20" --> Subnet allocated for the cluster
      }
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "ACSKubeMaster",
      "vmSize": "Standard_A2",
      "vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<Vnet Name>/subnets/KubeClusterSubnet",
      "firstConsecutiveStaticIP": "10.0.1.50", --> IP address allocated to the Master node
      "vnetCidr": "10.0.0.0/16" --> Virtual network address space
    },
    "agentPoolProfiles": [
      {
        "name": "k8sagentpoo1",
        "count": 2,
        "vmSize": "Standard_A2_v2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<VNet Name>/subnets/KubeClusterSubnet",
        "availabilityProfile": "AvailabilitySet"
      }
    ],
    "linuxProfile": {
      "adminUsername": "KubeServerAdmin",
      "ssh": {
        "publicKeys": [
          {…}
        ]
      }
    },
    "servicePrincipalProfile": {
      "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "secret": "azure123"
    }
  }
}

Distribuera ett plug-in för ett Kubernetes-kluster

Genomför följande steg för att installera pluginet på varje Azure-virtuell maskin i ett Kubernetes-kluster:

  1. Ladda ner och installera pluginet.

  2. Förallokera en virtuell nätverks-IP-adresspool på varje virtuell maskin från vilken IP-adresser tilldelas Pods. Varje Azure-virtuell maskin har en primär virtuell nätverks privat IP-adress på varje nätverksgränssnitt. Poolen av IP-adresser för Pods läggs till som sekundära adresser (ipconfigs) på virtuella maskinens nätverksgränssnitt, med ett av följande alternativ:

    Se till att du lägger till tillräckligt många IP-adresser för alla Pods som du förväntar dig att få upp på den virtuella maskinen.

  3. Välj pluginet för att tillhandahålla nätverk för ditt kluster genom att skicka kommandoradsalternativet –network-plugin=cni till Kubelet under klustrets skapande. Kubernetes letar som standard efter plug-in och konfigurationsfilen i de kataloger där de redan är installerade.

  4. Om du vill att dina Pods ska få tillgång till internet, lägg till följande iptables-regel på dina Linux-virtuella maskiner till source-NAT-internettrafiken. I följande exempel är det specificerade IP-intervallet 10.0.0.0/8.

    iptables -t nat -A POSTROUTING -m iprange ! --dst-range 168.63.129.16 -m
    addrtype ! --dst-type local ! -d 10.0.0.0/8 -j MASQUERADE
    

    De reglerar NAT-trafik som inte är avsedd för de angivna IP-områdena. Antagandet är att all trafik utanför de tidigare intervallen är internettrafik. Du kan välja att specificera IP-intervallen för den virtuella maskinens virtuella nätverk, peerade virtuella nätverk och lokala nätverk.

    Windows-virtuella maskiner hämtar automatiskt NAT-trafik som har en destination utanför subnätet som den virtuella maskinen tillhör. Det är inte möjligt att ange anpassade IP-intervall.

Efter att de föregående stegen är slutförda tilldelas Pods som tas upp på Kubernetes Agents virtuella maskiner automatiskt privata IP-adresser från det virtuella nätverket.

Distribuera plug-in för Docker-containrar

  1. Ladda ner och installera pluginet.

  2. Skapa Docker-containrar med följande kommando:

    ./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
    

Containrarna börjar automatiskt ta emot IP-adresser från den tilldelade poolen. Om du vill lastbalansera trafiken till Docker-containrarna måste de placeras bakom en mjukvarulastbalanserare med en lastbalanseringsprobe.

CNI-nätverkskonfigurationsfil

CNI:s nätverkskonfigurationsfil beskrivs i JSON-format. Det finns som standard för /etc/cni/net.d Linux och c:\cni\netconf Windows. Filen specificerar konfigurationen av pluginet och är annorlunda för Windows och Linux. Json-filen som följer är ett exempel på Linux-konfigurationsfil, följt av en förklaring till några av nyckelinställningarna. Du behöver inte göra några ändringar i filen:

{
	   "cniVersion":"0.3.0",
	   "name":"azure",
	   "plugins":[
	      {
	         "type":"azure-vnet",
	         "mode":"bridge",
	         "bridge":"azure0",
	         "ipam":{
	            "type":"azure-vnet-ipam"
	         }
	      },
	      {
	         "type":"portmap",
	         "capabilities":{
	            "portMappings":true
	         },
	         "snat":true
	      }
	   ]
}

Förklaring av miljöer

  • "cniVersion": Azure Virtual Network CNI-plugins stöder versionerna 0.3.0 och 0.3.1 av CNI-specifikationen.

  • "name": Namnet på nätverket. Denna egenskap kan sättas till vilket unikt värde som helst.

  • "type": Namnet på nätverkspluginet. Ställ in på azure-vnet.

  • "läge": Operativt läge. Det här fältet är valfritt. Det enda läget som stöds är "bridge". För mer information, se driftslägen.

  • "brygga": Namnet på bron som används för att koppla containrar till ett virtuellt nätverk. Det här fältet är valfritt. Om det utelämnas väljer pluginet automatiskt ett unikt namn baserat på huvudgränssnittets index.

  • "IPAM" - "type": Namnet på IPAM-pluginen. Alltid inställd på azure-vnet-ipam.

Ladda ner och installera pluginet

Ladda ner pluginet från GitHub. Ladda ner den senaste versionen för plattformen du använder:

  • Linux: azure-vnet-cni-linux-amd64-<version number>.tgz

  • Windows:azure-vnet-cni-windows-amd64-<version number>.zip

Kopiera installationsskriptet för Linux eller Windows till din dator. Spara skriptet i en scripts katalog på din dator och namnge filen install-cni-plugin.sh för Linux eller install-cni-plugin.ps1 för Windows.

För att installera pluginet, kör rätt skript för din plattform. Det första argumentet är Azure CNI-plugin-versionen och är obligatorisk. Använd den senaste versionen som listas på sidan för azure-container-networking releases.

Linux-skriptet accepterar ett valfritt andra argument, containernetworking CNI-plugin-versionen. Om du utelämnar det använder skriptet sin inbyggda standard. Windows-skriptet använder endast Azure CNI-pluginversionen.

scripts/install-cni-plugin.sh <azure-cni-plugin-version> [cni-plugin-version]
scripts\install-cni-plugin.ps1 <azure-cni-plugin-version>

Skriptet installerar pluginet nedan /opt/cni/bin för Linux och c:\cni\bin Windows. Det installerade tillägget levereras med en enkel nätverkskonfigurationsfil som fungerar efter installation. Den behöver inte uppdateras. För att lära dig mer om inställningarna i filen, se CNI nätverkskonfigurationsfil.