Freigeben über


Konfigurieren des Cluster der Ebene 3 in einem isolierten Netzwerk mit mehrschichtiger Azure IoT-Netzwerkverwaltung

Wichtig

Die von Azure Arc unterstützte Vorschauversion von „Azure IoT Einsatz“ befindet sich derzeit in der Vorschauphase. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Sie müssen eine neue Installation von „Azure IoT Einsatz“ bereitstellen, wenn ein allgemein verfügbares Release verfügbar wird. Sie werden kein Upgrade für eine Preview-Installation durchführen können.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Sie können eine spezielle isolierte Netzwerkumgebung für die Bereitstellung von Azure IoT Einsatz (Preview) konfigurieren. Beispiel: Ebene 3 oder niedriger in der ISA-95-Netzwerkarchitektur. In diesem Artikel richten Sie einen Kubernetes-Cluster ein, um alle Voraussetzungen von Azure IoT Einsatz zu erfüllen und den Cluster über den mehrschichtigen Azure IoT-Netzwerkverwaltung (Vorschau)-Dienst der oberen Ebene für Arc zu aktivieren. Bevor Sie diesen Prozess starten, muss der Layered Network Management-Dienst bereit sein, die Verbindungsanfrage von dieser Ebene anzunehmen.

Sie führen die folgenden Aufgaben aus:

  • Richten Sie das Hostsystem ein, und installieren Sie alle erforderlichen Software in einer internetorientierten Umgebung.
  • Installieren Sie die Kubernetes Ihrer Wahl.
  • Verschieben Sie den Host in die isolierte Netzwerkumgebung.
  • Verwenden Sie eine angepasste DNS-Einstellung, um den Netzwerkdatenverkehr an den Layered Network Management-Dienst auf übergeordneter Ebene zu leiten.
  • Arc-aktivieren des Clusters.

Voraussetzungen

Befolgen Sie die Hinweise zu den Hardware-Anforderungen und Voraussetzungen in den Abschnitten Bereiten Sie Ihren Azure Arc-fähigen Kubernetes-Cluster vor.

Konfigurieren eines Kubernetes-Clusters

Sie können AKS Edge Essentials verwenden, die unter Windows 11 oder einem K3S-Cluster auf Ubuntu für den Kubernetes-Cluster gehostet werden.

Sie sollten diesen Schritt in einer Internetumgebung ausführen, die außerhalb des isolierten Netzwerks ist. Andernfalls müssen Sie das Offlineinstallationspaket für die folgende Software im nächsten Abschnitt vorbereiten.

Vorbereiten eines Ubuntu-Computers

  1. Ubuntu 22.04 LTS ist die empfohlene Version für den Hostcomputer.

  2. Installieren Sie Helm 3.8.0 oder höher.

  3. Installieren Sie Kubectl.

  4. Führen Sie den folgenden Befehl aus, um die Benutzerüberwachungs-/Instanzbeschränkungen zu erhöhen.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  5. Um eine bessere Leistung zu erzielen, erhöhen Sie den Grenzwert für Dateideskriptor:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Installieren Sie die folgende optionale Software, wenn Sie planen, Azure IoT Einsatz-Schnellstarts oder MQTT-bezogene Szenarien zu testen.

  7. Installieren Sie die Azure CLI. Sie können die Azure CLI direkt auf dem Computer der Ebene 3 oder auf einem anderen Entwickler - oder Jumpbox-Computer installieren, wenn Sie remote auf den Cluster der Ebene 3 zugreifen möchten. Wenn Sie remote auf den Kubernetes-Cluster zugreifen, um den Clusterhost sauber zu halten, führen Sie die kubectl - und az-bezogenen Befehle vom Entwicklercomputer für die restlichen Schritte in diesem Artikel aus.

Erstellen des K3S-Clusters

  1. Installieren Sie K3S mit dem folgenden Befehl:

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    

    Wichtig

    Stellen Sie sicher, dass Sie den --disable=traefik-Parameter verwenden, um treafik zu deaktivieren. Andernfalls haben Sie möglicherweise ein Problem, wenn Sie versuchen, öffentliche IP für den Layered Network Management-Dienst in späteren Schritten zuzuweisen.

    Alternativ können Sie das K3S offline konfigurieren, indem Sie die Schritte in der Air-Gap Install Dokumentation nach Verschieben des Geräts in die isolierte Netzwerkumgebung ausführen.

  2. Kopieren Sie die Yaml-Datei für die K3s-Konfiguration in .kube/config.

    mkdir ~/.kube
    cp ~/.kube/config ~/.kube/config.back
    sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
    mv ~/.kube/merged ~/.kube/config
    chmod  0600 ~/.kube/config
    export KUBECONFIG=~/.kube/config
    #switch to k3s context
    kubectl config use-context default
    

Verschieben des Geräts auf isoliertes Netzwerk der Ebene 3

Nachdem das Gerät auf die Isolierte Netzwerkebene der Ebene 3 verschoben wurde, muss ein benutzerdefiniertes DNSvorhanden sein.

  • Wenn Sie den CoreDNS-Ansatz auswählen, führen Sie die Schritte in der Anweisung aus, und Ihr Cluster ist bereit, eine Verbindung mit Arc herzustellen.
  • Wenn Sie einen DNS-Serververwenden, müssen Sie den DNS-Server bereit haben und dann die DNS-Einstellung von Ubuntu konfigurieren. Im folgenden Beispiel wird die Ubuntu-Benutzeroberfläche verwendet:
    1. Öffnen Sie die WLAN-Einstellungen.
    2. Wählen Sie die Einstellung der aktuellen Verbindung aus.
    3. Deaktivieren Sie auf der Registerkarte „IPv4“ die Einstellung Automatisch für DNS, und geben Sie die lokale IP des DNS-Servers ein.

Bereitstellen des Clusters in Azure Arc

Verwenden Sie vor der Bereitstellung in Azure Arc den folgenden Befehl, um sicherzustellen, dass der DNS-Server erwartungsgemäß funktioniert:

dig login.microsoftonline.com

Die Ausgabe sollte ungefähr wie das folgende Beispiel aussehen. Überprüfen Sie im ANTWORTABSCHNITT, ob die IP-Adresse die IP-Adresse Computer auf übergeordneter Ebene ist, die Sie zuvor eingerichtet haben.

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> login.microsoftonline.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28891
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.microsoftonline.com.     IN      A

;; ANSWER SECTION:
login.microsoftonline.com. 0    IN      A       100.104.0.165

Arc-aktivieren des Clusters

  1. Melden Sie sich mit der Azure CLI an. Um Später Berechtigungsprobleme zu vermeiden, ist es wichtig, dass die Anmeldung interaktiv über ein Browserfenster erfolgt:

    az login
    
  2. Legen Sie Umgebungsvariablen für den Rest des Setups fest. Ersetzen Sie Werte in <> durch gültige Werte oder Namen Ihrer Wahl. Die CLUSTER_NAME und RESOURCE_GROUP werden basierend auf den von Ihnen bereitgestellten Namen erstellt:

    # Id of the subscription where your resource group and Arc-enabled cluster will be created
    $SUBSCRIPTION_ID = "<subscription-id>"
    # Azure region where the created resource group will be located
    # Currently supported regions: : "westus3" or "eastus2"
    $LOCATION = "WestUS3"
    # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
    $RESOURCE_GROUP = "<resource-group-name>"
    # Name of the Arc-enabled cluster to create in your resource group
    $CLUSTER_NAME = "<cluster-name>"
    
  3. Legen Sie den Azure-Abonnementkontext für alle Befehle fest:

    az account set -s $SUBSCRIPTION_ID
    
  4. Registrieren Sie die erforderlichen Ressourcenanbieter in Ihrem Abonnement:

    Hinweis

    Dieser Schritt muss nur einmal pro Abonnement durchgeführt werden. Zum Registrieren von Ressourcenanbietern benötigen Sie die Berechtigung zum Ausführen des /register/action-Vorgangs, welche in den Rollen „Mitwirkender“ und „Besitzer“ des Abonnements enthalten ist. Weitere Informationen finden Sie unter Azure-Ressourcenanbieter und -typen.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    
  5. Verwenden Sie den Befehl az group create, um in Ihrem Azure-Abonnement eine Ressourcengruppe zum Speichern aller Ressourcen zu erstellen:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. Verwenden Sie den Befehl az connectedk8s connect, um die Arc-Unterstützung Ihres Kubernetes-Clusters zu aktivieren und ihn in der Ressourcengruppe zu verwalten, die Sie im vorherigen Schritt erstellt haben:

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

    Tipp

    Wenn die connectedk8s Befehle fehlschlagen, versuchen Sie, die Cmdlets in Verbinden Ihres AKS Edge Essentials Clusters mit Arc.

  7. Rufen Sie die Objekt-ID (objectId) oder die ID (id) der Microsoft Entra ID-Anwendung ab, die der Azure Arc-Dienst verwendet. Der von Ihnen verwendete Befehl hängt von Ihrer Azure CLI-Version ab.

    # If you're using an Azure CLI version lower than 2.37.0, use the following command:
    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
    # If you're using Azure CLI version 2.37.0 or higher, use the following command:
    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  8. Verwenden Sie den Befehl az connectedk8s enable-features, um für Ihren Cluster die Unterstützung benutzerdefinierter Speicherorte zu aktivieren. Verwenden Sie den objectId- oder den id-Wert aus dem vorherigen Befehl, um benutzerdefinierte Speicherorte im Cluster zu aktivieren:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid <objectId/id> --features cluster-connect custom-locations
    

Konfigurieren von Clusternetzwerken

Wichtig

Diese Schritte gelten nur für AKS Edge Essentials.

Nachdem Sie Azure IoT Operations für Ihren Cluster bereitgestellt haben, aktivieren Sie eingehende Verbindungen mit dem MQTT-Broker und konfigurieren Sie die Portweiterleitung:

  1. Aktivieren Sie eine Firewallregel für Port 18883:
    New-NetFirewallRule -DisplayName "MQTT broker" -Direction Inbound -Protocol TCP -LocalPort 18883 -Action Allow
    
  2. Führen Sie den folgenden Befehl aus und notieren Sie sich die IP-Adresse für den Dienst aio-broker:
    kubectl get svc aio-broker -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. Aktivieren Sie die Portweiterleitung für Port 18883. Ersetzen Sie <aio-broker IP address> durch die im vorherigen Schritt notierte IP-Adresse:
    netsh interface portproxy add v4tov4 listenport=18883 listenaddress=0.0.0.0 connectport=18883 connectaddress=<aio-broker IP address>