Distribuera plugin-programmet Azure Virtual Network CNI
Plugin-programmet Azure Virtual Network CNI installerar en virtuell Azure-dator och tillhandahåller funktioner för virtuella nätverk i Kubernetes-poddar och Docker-containrar. Du kan läsa mer om plugin-programmet i Enable containers to use Azure Virtual Network capabilities (Aktivera Azure Virtual Network-funktioner i containrar). Du kan också använda plugin-programmet med Azure Kubernetes Service (AKS) genom att välja alternativet Advanced Networking (Avancerat nätverk). Om du gör det placeras AKS-containrar automatiskt i ett virtuella nätverk.
Distribuera plugin-program för Azure Container Service-Engine Kubernetes-kluster
Azure Container Service-Engine distribuerar ett Kubernetes-kluster med en Azure Resource Manager-mall. Klusterkonfigurationen anges i en JSON-fil som överförs till verktyget när mallen skapas. Läs mer om hela listan med klusterinställningar som stöds och beskrivningar av dessa i Microsoft Azure Container Service Engine - Cluster Definition. Plugin-programmet är standardnätverks-plugin-programmet för kluster som skapats med hjälp av Azure Container Service-Engine. Följande inställningar för nätverkskonfiguration är viktiga när du konfigurerar plugin-programmet:
Inställning | beskrivning |
---|---|
firstConsecutiveStaticIP | IP-adressen som allokeras till huvudnoden. Denna inställning är obligatorisk. |
clusterSubnet under kubernetesConfig | CIDR för det virtuella nätverkets undernät där klustret distribueras, och från vilket IP-adresser tilldelas till poddar |
vnetSubnetId under masterProfile | Anger resurs-ID för Azure Resource Manager för undernätet där klustret ska distribueras |
vnetCidr | CIDR för det virtuella nätverket där klustret distribueras |
max-Pods under kubeletConfig | Maximalt antal poddar på varje Virtual Machine-agent. Standardvärdet är 30 för plugin-programmet. Du kan ange upp till 250 |
Exempelkonfiguration
Json-exemplet nedan är för ett kluster med följande egenskaper:
En huvudnod och två agentnoder
Distribueras i ett undernät med namnet KubeClusterSubnet (10.0.0.0/20), med både huvudnoder och agentnoder som finns i det.
{
"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 plugin-program för ett Kubernetes-kluster
Utför följande steg för att installera plugin-programmet på varje virtuell Azure-dator i ett Kubernetes-kluster:
Förallokera en IP-adresspool för virtuellt nätverk på varje virtuell dator från vilken IP-adresser tilldelas till poddar. Varje virtuell Azure-dator har en primär privat IP-adress i varje nätverksgränssnitt. Adresserna i IP-adresspoolen för poddar läggs till som sekundära adresser (ipconfigs) i nätverksgränssnittet med ett av följande alternativ:
PowerShell: Tilldela flera IP-adresser med PowerShell
Azure Resource Manager-mall: Tilldela flera IP-adresser med mallar
Se till att du lägger till tillräckligt med IP-adresser för alla poddar som du tänker ha på den virtuella datorn.
Välj plugin-programmet för att ge ditt kluster nätverksfunktion genom att skicka kommandoradsalternativet
–network-plugin=cni
till Kubelet när klustret skapas. Kubernetes söker som standard efter plugin-programmet och konfigurationsfilen i de kataloger där de redan är installerade.Om du vill att poddarna ska ha åtkomst till Internet lägger du till följande iptables-regel i din Internettrafik från virtuella Linux-datorer till käll-NAT. I följande exempel är det angivna 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
Regler NAT-trafik som inte är avsedd för de angivna IP-intervallen. Här antas att all trafik utanför de föregående intervallen är Internettrafik. Du kan välja att ange IP-intervall för den virtuella datorns virtuella nätverk, för peerkopplade virtuella nätverk och lokala nätverk.
Virtuella Windows-datorer identifierar automatiskt källan för NAT-trafik som har ett mål som är utanför det undernät som den virtuell datorn tillhör. Det går inte att ange anpassade IP-intervall.
När de föregående stegen har slutförts tilldelas poddar som tas upp på de virtuella Kubernetes Agent-datorerna automatiskt privata IP-adresser från det virtuella nätverket.
Distribuera plugin-program för Docker-containrar
Skapa Docker-containrar med följande kommando:
./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
Containrarna börjar automatiskt att ta emot IP-adresser från den allokerade poolen. Om du vill lastbalansera trafik till Docker-containrarna måste de placeras bakom en programvarulastbalanserare med en lastbalanserareavsökning.
CNI-nätverkskonfigurationsfil
CNI-nätverkskonfigurationsfilen beskrivs i JSON-format. Den finns som standard i /etc/cni/net.d
för Linux och i c:\cni\netconf
för Windows. Filen anger konfigurationen för plugin-programmet. Olika filer används för Windows och Linux. Json nedan är ett exempel på en Linux-konfigurationsfil, följt av en förklaring till vissa viktiga inställningar. 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 till inställningar
"cniVersion": Azure Virtual Network CNI-plugin-program stöder versionerna 0.3.0 och 0.3.1 av CNI-specifikationen.
"name": Namnet på nätverket. Den här egenskapen kan anges till ett unikt värde.
"type": Namnet på nätverks-plugin-programmet. Ange azure-vnet.
"mode": Driftläge. Det här fältet är valfritt. Det enda läge som stöds är ”bridge”. Mer information finns i funktionslägen.
"bridge": Namnet på bryggan som används för att ansluta containrar till ett virtuellt nätverk. Det här fältet är valfritt. Om det utelämnas väljer plugin-programmet automatiskt ett unikt namn baserat på huvudgränssnittsindexet.
"ipam"" - type": Namnet på IPAM-plugin-programmet. Ange alltid azure-vnet-ipam.
Ladda ned och installera plugin-programmet
Hämta plugin-programmet från GitHub. Hämta den senaste versionen för den plattform som du använder:
Kopiera installationsskriptet för Linux eller Windows till datorn. Spara skriptet till en scripts
-katalog på din dator och ge filen namnet install-cni-plugin.sh
för Linux eller install-cni-plugin.ps1
för Windows.
Om du vill installera plugin-programmet kör du rätt skript för din plattform och anger vilken version av plugin-programmet du använder. Du kan till exempel ange v1.4.20. För Linux-installationen anger du en lämplig CNI-pluginversion, till exempel v1.0.1:
scripts/install-cni-plugin.sh [azure-cni-plugin-version] [cni-plugin-version]
scripts\\ install-cni-plugin.ps1 [azure-cni-plugin-version]
Skriptet installerar plugin-programmet under /opt/cni/bin
för Linux och c:\cni\bin
för Windows. Det installerade plugin-programmet levereras med en enkel nätverkskonfigurationsfil som kan användas efter installationen. Den behöver inte uppdateras. Du kan läsa mer om inställningarna i filen i CNI-nätverkskonfigurationsfil.