Delen via


De Container Network Interface-invoegtoepassing (CNI) Azure Virtual Network implementeren

De Container Network Interface-invoegtoepassing (CNI) Azure Virtual Network wordt geïnstalleerd op een virtuele Azure-machine om mogelijkheden voor virtuele netwerken toe te voegen aan containers van Kubernetes Pods en Docker. Zie Enable containers to use Azure Virtual Network capabilities (Containers voorbereiden voor gebruik van de mogelijkheden van Azure Virtual Network) voor meer informatie over de invoegtoepassing. De invoegtoepassing kan bovendien worden gebruikt met Azure Kubernetes Service (AKS) door het kiezen van de optie Geavanceerd (bij Netwerkconfiguratie), waarmee AKS-containers automatisch in een virtueel netwerk worden geplaatst.

Invoegtoepassing implementeren voor Azure Container Service-Engine Kubernetes-cluster

De Azure Container Service-Engine implementeert een Kubernetes-cluster met een Azure Resource Manager-sjabloon. De configuratie van het cluster is opgenomen in een JSON-bestand dat aan het hulpprogramma wordt doorgegeven bij het genereren van de sjabloon. Zie Microsoft Azure Container Service Engine - Cluster Definition (Microsoft Azure Container Service Engine - Clusterdefinitie) voor de volledige lijst met ondersteunde clusterinstellingen en de bijbehorende beschrijvingen. De invoegtoepassing is de standaardnetwerkinvoegtoepassing voor clusters die zijn gemaakt met behulp van de Azure Container Service-Engine. De volgende instellingen voor de netwerkconfiguratie zijn belangrijk bij het configureren van de invoegtoepassing:

Instelling Beschrijving
firstConsecutiveStaticIP Het IP-adres dat is toegewezen aan het hoofdknooppunt. Deze instelling moet worden opgegeven.
clusterSubnet onder kubernetesConfig CIDR van het subnet van het virtuele netwerk waar het cluster wordt geïmplementeerd, en van waaruit IP-adressen worden toegewezen aan Pods
vnetSubnetId onder masterProfile De resource-id van Azure Resource Manager van het subnet waarnaar het cluster moet worden geïmplementeerd
vnetCidr CIDR van het virtuele netwerk waarnaar het cluster wordt geïmplementeerd
max-Pods onder kubeletConfig Maximum aantal Pods op elke virtuele machine van de agent. Voor de invoegtoepassing is de standaardwaarde 30. U kunt een waarde opgeven van maximaal 250

Voorbeeldconfiguratie

Het volgende json-voorbeeld is voor een cluster met deze eigenschappen:

  • Eén hoofdknooppunt en twee agentknooppunten

  • Geïmplementeerd in een subnet met de naam KubeClusterSubnet (10.0.0.0/20), waarbij zowel de hoofd- als de agentknooppunten zich daarin bevinden.

{
  "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"
    }
  }
}

Invoegtoepassing implementeren voor een Kubernetes-cluster

Voltooi de volgende stappen om de invoegtoepassing te installeren op elke virtuele Azure-machine in een Kubernetes-cluster:

  1. Download en installeer de invoegtoepassing.

  2. Wijs een IP-adresgroep van een virtueel netwerk toe op elke virtuele machine waaruit IP-adressen worden toegewezen aan Pods. Elke virtuele Azure-machine wordt geleverd met een primair privé-IP-adres voor een virtueel netwerk op elke netwerkinterface. De groep met IP-adressen voor Pods wordt toegevoegd als secundaire adressen (ipconfigs) op de netwerkinterface van de virtuele machine, met behulp van een van de volgende opties:

    Zorg ervoor dat u voldoende IP-adressen toevoegt voor alle Pods die u verwacht te gebruiken op de virtuele machine.

  3. Selecteer de invoegtoepassing voor het aanbieden van netwerkvoorzieningen voor uw cluster door aan Kubelet de opdrachtregeloptie –network-plugin=cni door te geven tijdens het maken van het cluster. Kubernetes zoekt standaard naar de invoegtoepassing en het configuratiebestand in de mappen waarin ze al zijn geïnstalleerd.

  4. Als u wilt dat uw Pods toegang hebben tot het internet, voegt u de volgende iptables-regel toe op uw virtuele Linux-machines om 'source NAT' toe te passen op internetverkeer. In het volgende voorbeeld is het opgegeven IP-adresbereik 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 regels voor NAT-verkeer dat niet is bestemd voor de opgegeven IP-bereiken. De aanname is dat al het verkeer buiten de vorige bereiken internetverkeer is. U kunt ervoor kiezen om de IP-bereiken van het virtuele netwerk van de virtuele machine op te geven, van virtuele netwerken met peering en van on-premises netwerken.

    Virtuele Windows-machines passen automatisch 'source NAT' toe op verkeer met een bestemming buiten het subnet van de virtuele machine. Het is niet mogelijk om aangepaste IP-bereiken op te geven.

Na voltooiing van de vorige stappen worden pods die op de virtuele Machines van de Kubernetes Agent worden weergegeven, automatisch privé-IP-adressen uit het virtuele netwerk toegewezen.

Invoegtoepassing implementeren voor Docker-containers

  1. Download en installeer de invoegtoepassing.

  2. Maak Docker-containers met de volgende opdracht:

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

Er worden vanuit de toegewezen groep automatisch IP-adressen toegewezen aan de containers. Als u verkeer naar de Docker-containers wilt verdelen, moeten ze achter een software load balancer worden geplaatst met een load balancer-test.

Netwerkconfiguratiebestand van CNI

Het netwerkconfiguratiebestand van CNI heeft de JSON-indeling. Het bestand bevindt zich standaard in /etc/cni/net.d voor Linux en c:\cni\netconf voor Windows. Het bestand bepaalt de configuratie van de invoegtoepassing en verschilt voor Windows en Linux. De json hieronder is een voorbeeld van een Linux-configuratiebestand, gevolgd door een uitleg van enkele van de belangrijkste instellingen. U hoeft het bestand niet te wijzigen:

{
	   "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
	      }
	   ]
}

Uitleg van instellingen

  • "cniVersion": de CNI-invoegtoepassingen van Azure Virtual Network ondersteunen versies 0.3.0 en 0.3.1 van de CNI-specificatie.

  • "name": de naam van het netwerk. Deze eigenschap kan worden ingesteld op elke unieke waarde.

  • "type": naam van de netwerkinvoegtoepassing. Ingesteld op azure-vnet.

  • "mode": operationele modus. Dit veld is optioneel. De enige modus die wordt ondersteund is 'bridge'. Zie Operational modes (Operationele modi) voor meer informatie.

  • 'brug': de naam van de brug die wordt gebruikt om containers te verbinden met een virtueel netwerk. Dit veld is optioneel. Als u dit weglaat, kiest de invoegtoepassing automatisch een unieke naam op basis van de hoofdinterface-index.

  • "ipam"" - type": naam van de IPAM-invoegtoepassing. Altijd ingesteld op azure-vnet-ipam.

De invoegtoepassing downloaden en installeren

Download de invoegtoepassing van GitHub. Download de nieuwste versie voor het platform dat u gebruikt:

Kopieer het installatiescript voor Linux of Windows naar uw computer. Sla het script op in een map scripts op uw computer en geef het bestand de naam install-cni-plugin.sh voor Linux of install-cni-plugin.ps1 voor Windows.

Als u de invoegtoepassing wilt installeren, voert u het juiste script voor uw platform uit, waarbij u de versie van de invoegtoepassing opgeeft die u gebruikt. U kunt bijvoorbeeld v1.4.20 opgeven. Geef voor de Linux-installatie een geschikte versie van de CNI-invoegtoepassing op, zoals v1.0.1:

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

Het script installeert de invoegtoepassing onder /opt/cni/bin voor Linux en c:\cni\bin voor Windows. De geïnstalleerde invoegtoepassing wordt geleverd met een eenvoudig netwerkconfiguratiebestand dat direct kan worden gebruikt na de installatie. Het bestand hoeft niet te worden bijgewerkt. Zie Netwerkconfiguratiebestand van CNI voor meer informatie over de instellingen in het bestand.