Sdílet prostřednictvím


AKS Edge Essentials – několik konfigurací síťových adaptérů

Ve výchozím nastavení má uzel AKS Edge Essentials Linux přiřazenou jednu síťovou kartu (NIC). Během nasazování uzlu ale můžete nakonfigurovat linuxový uzel s více síťovými rozhraními. Tato funkce může být užitečná v mnoha scénářích, kdy můžete mít rozdělení sítě nebo oddělení do různých sítí nebo zón. Pokud chcete připojit uzel AKS Edge Essentials Linuxu k různým sítím, musíte k uzlu Linux připojit různé síťové karty.

Tento článek popisuje, jak nakonfigurovat uzel AKS Edge Essentials Linux tak, aby podporoval více síťových karet a připojil se k více sítím. Následující kroky shrnují tento proces:

  1. Vytvořte nasazení AKS Edge Essentials pomocí sekundární síťové karty.
  2. Ověřte několik nastavení konfigurace sítě síťových adaptérů.
  3. Konfigurace modulu plug-in Multus CNI
  4. Nakonfigurujte sekundární síť Multus s ukázkovým podem.
  5. Ověřte připojené sítě podů.

Další informace o konceptech sítí a konfiguracích Multus najdete v tématu Sítě AKS Edge Essentials a Multus – Příručka pro rychlý start.

Poznámka:

Podpora AKS Edge Essentials pro více síťových adaptérů je omezená na uzly Linuxu. Pokud potřebujete podporu pro uzly Windows, můžete podat žádost o problém nebo funkci v úložišti AKS Edge Essentials Na GitHubu.

Vytvoření nasazení AKS Edge Essentials pomocí sekundární síťové karty

Pokud chcete nasadit linuxový uzel s více síťovými kartami, musíte do souboru JSON nasazení přidat sekundární karty rozhraní. Upravte soubor JSON nasazení a v rámci LinuxNode.SecondaryNetworks této části zajistěte, abyste zadali sekundární síť, která se má přidat do uzlu Linuxu. Můžete zadat pole VMSwitchName s volitelnými informacemi o statické IP adrese (Ip4GatewayAddressIp4AddressaIp4PrefixLength):

  1. Postupujte podle kroků v části Nastavení počítače.

  2. Vytvořte virtuální přepínač Hyper-V. Další informace najdete v tématu Vytvoření a konfigurace virtuálního přepínače pomocí technologie Hyper-V.

  3. Upravte soubor JSON nasazení. Do oddílu LinuxNode.SecondaryNetworks přidejte následující parametry:

    Parametr Přípustné hodnoty Komentáře
    VMSwitchName Název virtuálního přepínače. Název virtuálního přepínače přiřazeného k uzlu Linuxu.
    Ip4Address Adresa IPv4 v rozsahu oboru serveru DCHP. Statická ipv4 adresa uzlu Linuxu.
    Ip4GatewayAddress Adresa IPv4 brány podsítě Adresa Ipv4 brány, platná pouze v případě, že je zadaná statická adresa Ipv4.
    Ip4PrefixLength Délka předpony IPv4 podsítě Délka předpony podsítě Ipv4, platná pouze v případě, že je zadaná statická adresa Ipv4.
    {
    ...,
    "LinuxNode": {
        ...,
        "SecondaryNetworks": [
          {
            "VMSwitchName": <virtual-switch-name>,
            "Ip4Address": <linux-node-secondary-ip-address>,
            "Ip4GatewayAddress": <gateway-ip-address>,
            "Ip4PrefixLength": <ip-prefix-length>
          }
        ]
      }
    }
    
  4. Nasaďte uzel AKS Edge Essentials podle kroků v části Vytvoření nasazení jednoho počítače nebo vytvoření úplného nasazení.

Ověření nastavení konfigurace sítě s více síťovými adaptéry

Po úspěšné instalaci a nasazení uzlu AKS Edge Essentials se ujistěte, že se vytvořilo a přidalo primární i sekundární rozhraní do uzlu Linuxu:

  1. Zkontrolujte primární rozhraní:

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo ip addr eth0"
    
  2. Zkontrolujte sekundární síťové rozhraní. Pokud jste přidali více než jedno další rozhraní, zobrazí se jako ethX s X je počet dalších síťových rozhraní:

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo ip addr eth1"
    

Konfigurace modulu plug-in Multus CNI

Po úspěšné instalaci a nasazení uzlu AKS Edge Essentials povolte Multus následujícím postupem:

  1. Ověřte, že je výchozí síť připravená, a to výpisem uzlů Kubernetes:

    kubectl get nodes
    
  2. Naklonujte úložiště Multus Cni:

    git clone https://github.com/k8snetworkplumbingwg/multus-cni.git
    
  3. Přejděte do adresáře projektu multus-cni .

  4. Přejděte do složky nasazení a zobrazte skripty sady démon použitých ke konfiguraci Multusu.

  5. Pokud používáte verzi K3s, proveďte následující úpravy multus-daemonset.yml skriptu, aby byl kompatibilní pro použití s K3s:

    1. Získejte token hash úložiště AKS Edge Essentials. Hodnotu hash můžete najít tak, že přejdete na /var/lib/rancher/k3s/data/.

      Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo ls -AU /var/lib/rancher/k3s/data/ | head -1"
      
    2. Nahraďte následující řádky konfigurace svazku:

      volumes:
      - name: cni
          hostPath:
          path: /etc/cni/net.d
      - name: cnibin
          hostPath:
          path: /opt/cni/bin
      

      Použijte token hash úložiště z předchozího kroku a nahraďte konfiguraci následujícími řádky:

      volumes:
      - name: cni
          hostPath:
          path: /var/lib/rancher/k3s/agent/etc/cni/net.d
      - name: cnibin
          hostPath:
          path: /var/lib/rancher/k3s/data/<replace-with-your-hash>/bin
      
    3. Nahraďte následující řádky konfigurace kontejneru:

      containers:
      - name: kube-multus
          image: ghcr.io/k8snetworkplumbingwg/multus-cni:snapshot
          command: ["/thin_entrypoint"]
          args:
          - "--multus-conf-file=auto"
          - "--multus-autoconfig-dir=/host/etc/cni/net.d"
          - "--cni-conf-dir=/host/etc/cni/net.d"
      

      Nahraďte je odpovídající konfigurací kontejneru K3s :

      containers:
      - name: kube-multus
          image: nfvpe/multus:v3.4.1
          command: ["/entrypoint.sh"]
          args:
          - "--multus-conf-file=auto"
          - "--cni-version=0.3.1"
          # Add the following arg
          - "--multus-kubeconfig-file-host=/var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d/multus.kubeconfig"
      
  6. Použijte aktualizovaný soubor sady démon Multus pomocí následujícího příkazu:

    kubectl apply -f multus-daemonset.yml
    

Pokud je všechno správně nainstalované, Kubernetes spustí sadu démon Multus, která spustí pod na každém uzlu, a výsledkem je umístění binárního souboru Multus do každého uzlu v /var/lib/rancher/k3s/data/[replace-with-your-hash]/bin.

Daemonset přečte první abecední konfigurační soubor v /var/lib/rancher/k3s/agent/etc/cni/net.d a vytvoří nový konfigurační soubor pro Multus na každém uzlu jako /var/lib/rancher/k3s/agent/etc/cni/net.d/00-multus.conf. Tento soubor se automaticky vygeneruje a je založený na výchozí konfiguraci sítě. Vytvoří také adresář /var/lib/rancher/k3s/agent/etc/cni/net.d/multus.d na každém uzlu s ověřovacími informacemi pro Multus pro přístup k rozhraní Kubernetes API.

Ověření instalace Multusu

Instalace může zkontrolovat následující informace:

  1. Všechny dříve uvedené soubory byly generovány zobrazením zadaných cest k adresáři:

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo ls -l /var/lib/rancher/k3s/data/<replace-with-your-hash>/bin | grep multus"
    
  2. Spuštěním tohoto příkazu se ujistěte, že se pody Multus spustily bez chyby:

    kubectl get pods --all-namespaces | Select-String 'Multus'
    
  3. Zkontrolujte soubor 00-multus.conf a ujistěte se, že je zadána správná verze CNI. Aktualizujte hodnotu verze CNI na 0.3.1 , pokud tato hodnota ještě není výchozí hodnotou:

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo cat /var/lib/rancher/k3s/agent/etc/cni/net.d/00-multus.conf"
    

Konfigurace sekundární sítě Multus s ukázkovým podem

Po instalaci a spuštění modulu plug-in Multus vytvořte definici síťové přílohy Kubernetes.

  1. Vytvořte soubor yaml secondarynet-conf.yaml pro sekundární síť. Součástí instalace Multus quickstart, vytvoří CRD (vlastní definici prostředku), která se dá použít k definování konfigurace pro všechna další rozhraní. Následující ukázkový soubor YAML přidá sekundární síť:

    # This net-attach-def defines secondarynet-conf
    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: secondarynet-conf
    spec:
      config: '{
          "cniVersion": "0.3.1",
          "plugins": [
              {
              "type": "bridge",
              "bridge": "mynet1",
              "ipam": {
                "subnet": "10.0.0.0/24",
                "rangeStart": "10.0.0.60",
                "rangeEnd": "10.0.0.120"},
                "gateway": "10.0.0.1"
              }
          ]
          }'
    

    Poznámka:

    Oficiální dokumentace k Multusu určuje macvlan sekundární rozhraní typu. macvlan Modul plug-in ale není ve výchozím nastavení dostupný. Pokud chcete použít tento modul plug-in, nainstalujte ho před zadáním konfigurace sekundární sítě. Další informace o různých síťových plug-inech a jejich ukázkových konfiguracích naleznete v tématu Použití Multus CNI v OpenShiftu.

  2. Vytvořte sekundární rozhraní pomocí secondarynet-conf.yaml vytvořeného v předchozím kroku:

    kubectl apply -f secondarynet-conf.yaml
    
  3. Vytvořte soubor samplepod.yaml pro nasazení ukázkového podu, který se připojí k dříve vytvořenému sekundárnímu rozhraní. Následující kód YAML je ukázka pro vytvoření nového podu, který používá sekundární rozhraní:

    apiVersion: v1
    kind: Pod
    metadata:
      name: samplepod
      annotations:
          k8s.v1.cni.cncf.io/networks: secondarynet-conf
    spec:
      containers:
      - name: samplepod
        command: ["/bin/ash", "-c", "trap : TERM INT; sleep infinity & wait"]
        image: alpine
    
  4. Vytvořte ukázkový pod pomocí samplepod.yaml vytvořeného v předchozím kroku:

    kubectl apply -f samplepod.yaml
    

Ověření připojených sítí podů

Posledním krokem je zajistit, aby byl pod spuštěný a že má připojená správná síťová rozhraní.

  1. Zkontrolujte, jestli je pod spuštěný:

    kubectl get pods
    
  2. Zkontrolujte pod a podívejte se, jaká rozhraní jsou připojená:

    kubectl exec -it samplepod -- ip a
    

    Existují tři rozhraní:

    • lo: rozhraní zpětné smyčky
    • eth0: výchozí síť
    • net1: nové rozhraní vytvořené pomocí secondarynet-conf

    Pod s více připojenými síťovými kartami

Další kroky