Udostępnij za pośrednictwem


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": "dd438987-aa12-4754-b47d-375811889714",
      "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:

  1. Pobierz i zainstaluj wtyczkę.

  2. 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:

    Upewnij się, że dodano wystarczająco dużo adresów IP dla wszystkich zasobników, które chcesz uruchomić na maszynie wirtualnej.

  3. 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.

  4. 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

  1. Pobierz i zainstaluj wtyczkę.

  2. 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).