Wdrażanie wtyczki CNI w usłudze Azure Virtual Network
Wtyczka CNI w usłudze Azure Virtual Network jest instalowana na maszynie wirtualnej platformy Azure i dodaje funkcje sieci wirtualnej do zasobników Kubernetes i kontenerów platformy Docker. Aby uzyskać więcej informacji na temat tej wtyczki, zobacz Enable containers to use Azure Virtual Network capabilities (Korzystanie z funkcji usługi Azure Virtual Network w kontenerach). Wtyczka może być również używana w usłudze Azure Kubernetes Service (AKS). Wybranie opcji Sieć zaawansowana automatycznie umieszcza kontenery usługi AKS w sieci wirtualnej.
Wdrażanie wtyczki dla klastra Kubernetes usługi Azure Container Service-Engine
Aparat azure Container Service-Engine wdraża klaster Kubernetes za pomocą szablonu usługi Azure Resource Manager. Konfiguracja klastra jest określona w pliku JSON, który jest przekazywany do narzędzia podczas generowania szablonu. Aby uzyskać więcej informacji na temat wszystkich obsługiwanych ustawień klastra, zobacz Microsoft Azure Container Service Engine — Cluster Definition (Usługa Microsoft Azure Container Service Engine — definicja klastra). Wtyczka to domyślna wtyczka sieciowa dla klastrów utworzonych przy użyciu aparatu azure Container Service-Engine. Następujące ustawienia konfiguracji sieci mają znaczenie podczas konfigurowania wtyczki:
Ustawienie | opis |
---|---|
firstConsecutiveStaticIP | Adres IP przydzielony do węzła głównego. To ustawienie jest obowiązkowe. |
clusterSubnet w obszarze kubernetesConfig | Zakres CIDR podsieci sieci wirtualnej, w której jest wdrażany klaster, zawierający adresy IP przydzielane do zasobników |
vnetSubnetId w obszarze masterProfile | Określa identyfikator zasobu usługi Azure Resource Manager podsieci, w której ma zostać wdrożony klaster |
vnetCidr | Zakres CIDR sieci wirtualnej, w której jest wdrażany klaster |
max-Pods w obszarze kubeletConfig | Maksymalna liczba zasobników na każdej maszynie wirtualnej agenta. W przypadku wtyczki domyślna wartość to 30. Maksymalna wartość to 250. |
Przykładowa konfiguracja
Poniższy przykład kodu json definiuje klaster o następujących właściwościach:
Jeden węzeł główny i dwa węzły agenta
Wdrożono w podsieci o nazwie KubeClusterSubnet (10.0.0.0/20) z węzłami głównymi i węzłami agenta znajdującymi się w niej.
{
"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"
}
}
}
Wdrażanie wtyczki w przypadku klastra Kubernetes
Wykonaj następujące czynności, aby zainstalować wtyczkę na każdej maszynie wirtualnej platformy Azure w klastrze Kubernetes:
Wstępnie przydziel pulę adresów IP sieci wirtualnej na każdej maszynie wirtualnej, z której adresy IP są przypisywane do zasobników. Każda maszyna wirtualna ma prywatny adres IP podstawowej sieci wirtualnej na każdym interfejsie sieciowym. Pula adresów IP dla zasobników zostanie dodana jako adresy pomocnicze (ipconfigs) w interfejsie sieciowym maszyny wirtualnej przy użyciu jednej z następujących opcji:
Interfejs wiersza polecenia: Assign multiple IP addresses using the Azure CLI (Przypisywanie wielu adresów IP przy użyciu interfejsu wiersza polecenia platformy Azure)
Szablon usługi Azure Resource Manager: Assign multiple IP addresses using templates (Przypisywanie wielu adresów IP przy użyciu szablonów)
Upewnij się, że dodano wystarczająco dużo adresów IP dla wszystkich zasobników, które chcesz uruchomić na maszynie wirtualnej.
Wybierz wtyczkę dostarczającą sieć dla klastra, przekazując do elementu Kubelet opcję wiersza polecenia
–network-plugin=cni
podczas tworzenia klastra. Platforma Kubernetes domyślnie wyszukuje wtyczkę i plik konfiguracji w katalogach, w których są już zainstalowane.Jeśli chcesz, aby zasobniki miały dostęp do Internetu, dodaj następującą regułę iptables na maszynach wirtualnych z systemem Linux dla ruchu internetowego opartego na źródle (SNAT). W poniższym przykładzie zakres adresów IP to 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
Ruch NAT reguł, który nie jest przeznaczony do określonych zakresów adresów IP. Zakłada się, że cały ruch wykraczający poza poprzednie zakresy to ruch internetowy. Możesz określić zakresy adresów IP sieci wirtualnej maszyny wirtualnej, równorzędnych sieci wirtualnych i sieci lokalnych.
Maszyny wirtualne z systemem Windows automatycznie wyszukują ruch NAT, którego element docelowy znajduje się poza podsiecią, do której należy maszyna wirtualna. Nie można określić niestandardowych zakresów adresów IP.
Po wykonaniu poprzednich kroków zasobniki utworzone na maszynach wirtualnych agenta Kubernetes są automatycznie przypisywane prywatne adresy IP z sieci wirtualnej.
Wdrażanie wtyczki w przypadku kontenerów platformy Docker
Utwórz kontenery platformy Docker za pomocą następującego polecenia:
./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
Kontenery automatycznie otrzymają adresy IP z przydzielonej puli. Jeśli chcesz równoważyć obciążenie ruchu do kontenerów platformy Docker, muszą one zostać umieszczone za programowym modułem równoważenia obciążenia z sondą modułu równoważenia obciążenia.
Plik konfiguracji wtyczki CNI
Plik konfiguracji wtyczki CNI jest opisany w formacie JSON. Jego domyślna lokalizacja to /etc/cni/net.d
w systemie Linux, a c:\cni\netconf
w systemie Windows. Ten plik określa konfigurację wtyczki i różni się między systemami Windows i Linux. Następujący kod json to przykładowy plik konfiguracji dla systemu Linux wraz z wyjaśnieniem niektórych kluczowych ustawień. Nie musisz wprowadzać żadnych zmian w pliku:
{
"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
}
]
}
Wyjaśnienie ustawień
"cniVersion": Wtyczki CNI usługi Azure Virtual Network obsługują wersje 0.3.0 i 0.3.1 specyfikacji CNI.
"name": nazwa sieci. Tę właściwość można ustawić na dowolną unikatową wartość.
"type": nazwa wtyczki sieciowej. Ustaw tu wartość azure-vnet.
"mode": tryb operacyjny. To pole jest opcjonalne. Jedynym obsługiwanym trybem jest tryb „bridge”. Aby uzyskać więcej informacji, zobacz sekcję poświęconą trybom działania.
"bridge": nazwa mostka używanego do łączenia kontenerów z siecią wirtualną. To pole jest opcjonalne. W przypadku pominięcia wtyczka automatycznie wybiera unikatową nazwę na podstawie głównego indeksu interfejsu.
"ipam"" - type": nazwa wtyczki IPAM. Zawsze powinna być tu ustawiona wartość azure-vnet-ipam.
Pobieranie i instalowanie wtyczki
Pobierz wtyczkę z witryny GitHub. Pobierz najnowszą wersję dla używanej platformy:
Skopiuj skrypt instalacji dla systemu Linux lub Windows na komputer. Zapisz skrypt w katalogu scripts
na komputerze i nazwij plik install-cni-plugin.sh
w przypadku systemu Linux lub install-cni-plugin.ps1
w przypadku systemu Windows.
Aby zainstalować wtyczkę, uruchom odpowiedni skrypt dla swojej platformy, określając wersję używanej wtyczki. Można na przykład określić 1.4.20. W przypadku instalacji systemu Linux podaj odpowiednią wersję wtyczki CNI, taką jak wersja 1.0.1:
scripts/install-cni-plugin.sh [azure-cni-plugin-version] [cni-plugin-version]
scripts\\ install-cni-plugin.ps1 [azure-cni-plugin-version]
Skrypt zainstaluje wtyczkę w lokalizacji /opt/cni/bin
w przypadku systemu Linux, a c:\cni\bin
w przypadku systemu Windows. Zainstalowana wtyczka zawiera prosty plik konfiguracji sieci, który działa po instalacji. Nie musi być aktualizowany. Aby dowiedzieć się więcej na temat ustawień w tym pliku, zobacz CNI network configuration file (Plik konfiguracji sieci wtyczki CNI).