Nasazení modulu plug-in rozhraní CNI sítě Azure Virtual Network
Modul plug-in rozhraní CNI sítě Azure Virtual Network se instaluje na virtuální počítač Azure a přináší do kontejnerů a Kubernetes Pod a Docker možnosti virtuální sítě. Další informace o modulu plug-in najdete v tématu o povolení využití funkcí služby Azure Virtual Network v kontejnerech. Navíc se dá plug-in použít se službou Azure Kubernetes Service (AKS). Stačí vybrat možnost Advanced Networking (Pokročilé síťové funkce), která automaticky umístí kontejnery AKS do virtuální sítě.
Nasazení modulu plug-in pro cluster Kubernetes modulu kontejneru Azure Container Service
Modul Azure Container Service nasadí cluster Kubernetes se šablonou Azure Resource Manageru. Konfigurace clusteru se zadává v souboru JSON, který se předá nástroji při generování šablony. Podrobnosti k úplnému výčtu podporovaných nastavení clusteru včetně jejich popisu najdete v tématu Modul služby Microsoft Azure Container Service – definice clusteru. Modul plug-in je výchozím síťovým modulem plug-in pro clustery vytvořené pomocí modulu Azure Container Service. Při konfiguraci modulu plug-in jsou důležitá následující nastavení konfigurace sítě:
Nastavení | Popis |
---|---|
firstConsecutiveStaticIP | IP adresa přidělená hlavnímu uzlu. Zadání tohoto nastavení je povinné. |
clusterSubnet v části kubernetesConfig | Blok CIDR podsítě virtuální sítě, kde je cluster nasazen a odkud se přidělují IP adresy jednotlivým kontejnerům Pod. |
vnetSubnetId v části masterProfile | Určuje ID prostředku podsítě v Azure Resource Manageru, ve kterém se má cluster nasadit. |
vnetCidr | Blok CIDR virtuální sítě, kde je cluster nasazen. |
max-Pods v části kubeletConfig | Maximální počet kontejnerů Pod na každý virtuální počítač agenta. Pro modul plug-in je výchozí hodnota 30. Můžete zadat limit až 250 kontejnerů. |
Příklad konfigurace
Následující příklad v jazyce json se týká clusteru s následujícími vlastnostmi:
Jeden hlavní uzel a dva uzly agenta
Nasazené v podsíti s názvem KubeClusterSubnet (10.0.0.0/20) s hlavními i agentovými uzly, které jsou v ní umístěné.
{
"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"
}
}
}
Nasazení modulu plug-in pro cluster Kubernetes
Pokud chcete nainstalovat modul plug-in na všechny virtuální počítače Azure v clusteru Kubernetes, postupujte takto:
Předem přidělte fond IP adres virtuální sítě na každém virtuálním počítači, ze kterého jsou IP adresy přiřazené podům. Každý virtuální počítač Azure má na každém síťovém rozhraní primární privátní IP adresu virtuální sítě. IP adresy z fondu pro kontejnery Pods se přidávají jako sekundární adresy (ipconfigs) v síťovém rozhraní virtuálních počítačům a to pomocí jedné z následujících možností:
PowerShell: Přiřazení více IP adres v prostředí PowerShell
Šablona Azure Resource Manageru: Přiřazení více IP adres pomocí šablon
Přidejte dostatek IP adres pro všechny kontejnery Pod, které chcete na virtuální počítač umístit.
Při vytváření clusteru předejte Kubeletu možnost příkazového řádku
–network-plugin=cni
a vyberte tak modul plug-in, který bude vašemu clusteru poskytovat síťové funkce. Kubernetes ve výchozím nastavení hledá modul plug-in a konfigurační soubor v adresářích, kde jsou už nainstalované.Pokud chcete kontejnerům Pod zajistit přístup k internetu, přidejte na své virtuální počítače s Linuxem následující pravidlo iptables, které zajistí určení zdroje překladu síťových adres (NAT) internetového provozu. V následujícím příkladu je zadaný rozsah IP adres 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
Pravidla provozu překladu adres (NAT), který není určený pro zadané rozsahy IP adres. Předpokladem je, že veškerý provoz mimo předchozí rozsahy je internetový provoz. Můžete se rozhodnout zadat rozsahy IP adres virtuální sítě virtuálního počítače, partnerských vztahu virtuálních sítí nebo místních sítí.
Virtuální počítače s Windows automaticky určují zdroj provozu NAT, který má cíl mimo podsíť, kam virtuální počítač patří. Vlastní rozsahy IP adres není možné zadat.
Po dokončení předchozích kroků se pody, které se otevře na virtuálních počítačích agenta Kubernetes, automaticky přiřadí privátní IP adresy z virtuální sítě.
Nasazení modulu plug-in pro kontejnery Docker
Pomocí následujícího příkazu vytvořte kontejnery Docker:
./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
Kontejnery začnou automaticky přijímat IP adresy z přiděleného fondu. Pokud chcete vyrovnávat zatížení provozu do kontejnerů Dockeru, musí se umístit za softwarový nástroj pro vyrovnávání zatížení pomocí sondy nástroje pro vyrovnávání zatížení.
Konfigurační soubor sítě CNI
Konfigurační soubor sítě CNI je popsán ve formátu JSON. Ve výchozím nastavení je pro Linux k dispozici v adresáři /etc/cni/net.d
a pro Windows v adresáři c:\cni\netconf
. Soubor určuje konfiguraci modulu plug-in a v systémech Windows a Linux se liší. Následující kód json představuje ukázkový konfigurační soubor pro Linux, poté následuje vysvětlení některých důležitých nastavení. V souboru není nutné provádět žádné změny:
{
"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
}
]
}
Vysvětlení nastavení
"cniVersion": Moduly plug-in CNI služby Azure Virtual Network podporují verze 0.3.0 a 0.3.1 specifikace CNI.
"name": Název sítě. Tuto vlastnost lze nastavit na libovolnou jedinečnou hodnotu.
"type": Název síťového modulu plug-in. Nastavte na azure-vnet.
"mode": Provozní režim. Toto pole je nepovinné. Jediný podporovaný režim je režim síťového mostu. Další informace najdete v tématu o provozních režimech.
"bridge": Název mostu, který se používá k připojení kontejnerů k virtuální síti. Toto pole je nepovinné. Pokud tento parametr vynecháte, modul plug-in automaticky vybere jedinečný název na základě hlavního indexu rozhraní.
"ipam"" - type": Název modulu plug-in IPAM. Vždy nastaveno na hodnotu azure-vnet-ipam.
Stažení a instalace modulu plug-in
Stáhněte modul plug-in z portálu GitHub. Vyhledejte nejnovější verzi pro platformu, kterou používáte:
Zkopírujte do svého počítače instalační skript pro Linux nebo Windows. Uložte skript v počítači do adresáře scripts
a soubor pojmenujte install-cni-plugin.sh
(Linux) nebo install-cni-plugin.ps1
(Windows).
Pokud chcete nainstalovat modul plug-in, spusťte příslušný skript pro vaši platformu a zadejte verzi modulu plug-in, který používáte. Můžete například zadat v1.4.20. Pro instalaci Linuxu zadejte odpovídající verzi modulu plug-in CNI, například v1.0.1:
scripts/install-cni-plugin.sh [azure-cni-plugin-version] [cni-plugin-version]
scripts\\ install-cni-plugin.ps1 [azure-cni-plugin-version]
Skript nainstaluje modul plug-in do adresáře /opt/cni/bin
(Linux), resp. c:\cni\bin
(Windows). Nainstalovaný modul plug-in obsahuje jednoduchý síťový konfigurační soubor, který se po instalaci spustí. Není třeba ho aktualizovat. Další informace o nastaveních v tomto souboru najdete v tématu věnovaném konfiguračnímu souboru sítě CNI.