Einen Cluster für Azure IoT Einsatz vorbereiten

Ein Azure Arc-fähigen Kubernetes-Cluster ist eine Voraussetzung für die Bereitstellung von Azure IoT Einsatz. Dieser Artikel beschreibt, wie man diesen Cluster vorbereitet, mit Anleitungen für Ubuntu, Windows, Azure Local und vSphere Kubernetes Service (VKS).

Wenn Sie Azure IoT Einsatz schnell bereitstellen und eine Beispielarbeitsauslastung in einer Testumgebung ausführen möchten, lesen Sie die Quickstart: Führen Sie Azure IoT Einsatz in GitHub Codespaces mit K3s aus.

Voraussetzungen

Für Multi-Node-Deployments verwenden Sie K3s auf Ubuntu, AKS auf Azure Local oder vSphere Kubernetes Service (VKS). AKS Edge Essentials unter Windows unterstützt nur Einzelknoten-Deployments.

Um einen Azure Arc-fähigen Kubernetes-Cluster vorzubereiten, benötigen Sie Folgendes:

  • Ein Azure-Abonnement mit der Rolle Owner oder einer Kombination aus Contributor und Benutzerzugriffsadministrator. Sie können Ihre Zugriffsebene überprüfen, indem Sie zu Ihrem Abonnement navigieren, Access-Steuerelement (IAM) auf der linken Seite des Azure-Portals auswählen und dann Zugriff anzeigen auswählen. Wenn Sie nicht über ein Azure-Abonnement verfügen, sie kostenlos erstellen bevor Sie beginnen.

  • Die auf dem Entwicklungscomputer installierte Azure CLI. Prüfen Sie Verfügbare Azure CLI-Erweiterungen auf die mindestens erforderliche Version für die connectedk8s-Erweiterung. Verwenden Sie az --version, um Ihre Version zu überprüfen. Bei Bedarf können Sie sie mithilfe von az upgrade aktualisieren. Weitere Informationen finden Sie unter Install the Azure CLI.

  • Die connectedk8s-Erweiterung für die Azure CLI. Verwenden Sie den folgenden Befehl, um die Erweiterung hinzuzufügen oder auf die neueste Version zu aktualisieren:

    az extension add --upgrade --name connectedk8s
    
  • Eine Azure Ressourcengruppe. Pro Ressourcengruppe wird nur eine Azure IoT Einsatz Instanz unterstützt. Verwenden Sie zum Erstellen einer neuen Ressourcengruppe den Befehl az group create. Eine Liste der derzeit unterstützten Azure Regionen finden Sie unter Supported regions.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

Die Azure CLI Beispiele in diesem Artikel verwenden Umgebungsvariablen, sodass Sie jeden Wert einmal festlegen und dann die Befehle as-iskopieren und einfügen können. Wenn Sie die Azure IoT Einsatz Codespaces-Umgebung aus dem Quickstart verwenden, sind diese Variablen bereits für Sie festgelegt und Sie können diesen Schritt überspringen. Ansonsten setze die folgenden Umgebungsvariablen in deiner Shell, bevor du die Befehle ausführst.

Die folgenden Skripte legen die am häufigsten verwendeten Umweltvariablen fest:

Umgebungsvariable Description
SUBSCRIPTION_ID Die ID des Abonnements, das Ihre Azure IoT Einsatz-Instanz enthält.
RESOURCE_GROUP Der Name der Ressourcengruppe, die Ihre Azure IoT Einsatz-Instanz enthält.
AIO_INSTANCE_NAME Der Name Ihrer Azure IoT Einsatz Instanz. Um deine Instanzen aufzulisten, führe az iot ops list -o table.
CLUSTER_NAME Der Name des Azure Arc-fähigen Kubernetes-Clusters, der deine Instanz hostet.
LOCATION Die Azure-Region zur Nutzung für neue Ressourcen, zum Beispiel eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Du musst nur die Variablen festlegen, die dieser Artikel verwendet. Dieser Artikel könnte zusätzliche Umgebungsvariablen für die von Ihnen gewählten Ressourcennamen verwenden. Der Artikel erklärt, wie man sie dort platziert, wo sie eingeführt werden.

Erstellen eines Clusters und Konfigurieren dieses Clusters als Arc-fähig

Dieser Abschnitt bietet Schritte zur Erstellung von Clustern in validierten Umgebungen unter Ubuntu, Windows, Azure Local und vSphere Kubernetes Service (VKS).

So bereiten Sie einen K3s-Kubernetes-Cluster in Ubuntu vor

  1. Erstellen Sie einen K3s-Cluster mit einem einzelnen Knoten oder mehreren Knoten. Beispiele finden Sie in der K3s-Schnellstartanleitung oder in den verwandten K3s-Projekten.

  2. Überprüfe, ob K3s installiert ist kubectl. Wenn nicht, folgen Sie den Anweisungen, um kubectl unter Linux zu installieren.

    kubectl version --client
    
  3. Folgen Sie den Anweisungen, um Helm zu installieren.

  4. Erstellen Sie eine K3s-Konfigurations-YAML-Datei in .kube/config:

    mkdir ~/.kube
    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
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. Führen Sie den folgenden Befehl aus, um die Grenzwerte für Benutzerüberwachung/Instanzen 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
    
  6. Um eine bessere Leistung zu erzielen, erhöhen Sie den Grenzwert für den Dateideskriptor:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Arc-Unterstützung für K3s-Cluster aktivieren

Verbinde deinen Cluster mit Azure Arc, damit du ihn remote verwalten kannst.

  1. Melden Sie sich von einem Computer mit kubectl-Zugriff auf Ihren Cluster mit Ihrem Microsoft Entra-Benutzerkonto, das über die erforderlichen Rollen für das Azure-Abonnement verfügt, bei Azure CLI an.

    az login
    

    Falls Sie dabei eine Fehlermeldung mit dem Wortlaut Ihr Gerät muss verwaltet werden, um auf Ihre Ressource zuzugreifen erhalten, führen Sie az login erneut aus und stellen Sie sicher, dass Sie sich interaktiv mithilfe eines Browsers anmelden.

  2. Nachdem Sie sich eingeloggt haben, zeigt die Azure CLI alle Ihre Abonnements an und zeigt Ihr Standard-Abonnement mit einem Sternchen *an. Um mit Ihrem Standardabonnement fortzufahren, wählen Sie Enter aus. Geben Sie andernfalls die Nummer des Azure Abonnements ein, das Sie verwenden möchten.

  3. Registrieren Sie die erforderlichen Ressourcenanbieter in Ihrem Abonnement.

    Hinweis

    Du musst diesen Schritt pro Abo nur einmal ausführen. Für die Registrierung von Ressourcenanbietern benötigen Sie die Berechtigung, den Vorgang /register/action auszuführen, die in den Rollen „Mitwirkender des Abonnements“ und „Besitzer“ 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"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Verwenden Sie den Befehl az connectedk8s connect, um Ihren Kubernetes-Cluster zu aktivieren und als Teil Ihrer Azure Ressourcengruppe zu verwalten.

    az connectedk8s connect --name $CLUSTER_NAME -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Um ungeplante Updates für Azure Arc und die Systemerweiterungen von Arc zu verhindern, die Azure IoT Einsatz als Abhängigkeiten verwendet, deaktiviert dieser Befehl die automatische Aktualisierung. Aktualisieren Sie stattdessen die Agents nach Bedarf manuell.

    Wichtig

    Wenn Ihre Umgebung einen Proxyserver oder Azure Arc Gateway verwendet, ändern Sie den Befehl az connectedk8s connect mit Ihren Proxyinformationen:

    1. Folgen Sie den Anweisungen in Herstellen einer Verbindung mit einem ausgehenden Proxyserver oder Einbinden von Kubernetes‑Clustern mit Azure Arc über das Azure Arc Gateway.
    2. Fügen Sie 169.254.169.254 zum --proxy-skip-range-Parameter des az connectedk8s connect-Befehls hinzu. Azure Device Registry verwendet diesen lokalen Endpunkt, um Zugriffstoken für die Autorisierung abzurufen.

    Azure IoT Einsatz unterstützt keine Proxyserver, die ein vertrauenswürdiges Zertifikat erfordern.

  5. Rufen Sie die Aussteller-URL des Clusters ab.

    az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
    

    Speichern Sie die Ausgabe dieses Befehls, die sie in den nächsten Schritten verwenden soll.

  6. Erstelle eine K3s-Konfigurationsdatei.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Fügen Sie der Datei config.yaml den folgenden Inhalt hinzu, und ersetzen Sie den <SERVICE_ACCOUNT_ISSUER> Platzhalter durch die Aussteller-URL Ihres Clusters.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Speichern Sie die Datei, und beenden Sie den Nano-Editor.

  9. Bereiten Sie sich darauf vor, den Azure Arc-Dienst, den benutzerdefinierten Standort, auf Ihrem Arc-Cluster zu aktivieren, indem Sie die benutzerdefinierte Standortobjekt-ID abrufen und als Umgebungsvariable speichern, OBJECT_ID. Sie müssen sich mit einem Microsoft Entra-Benutzerkonto und nicht mit einem Service Principal in der Azure CLI anmelden, um den Befehl erfolgreich auszuführen. Führen Sie den folgenden Befehl genau wie angegeben aus, ohne den GUID-Wert zu ändern.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

    Hinweis

    Möglicherweise erhalten Sie die folgende Fehlermeldung: „OID der App 'custom-locations' kann nicht abgerufen werden. Der Vorgang wird ohne Aktivierung des Features fortgesetzt. Unzureichende Berechtigungen zum Abschließen des Vorgangs.“ In diesem Fall verfügt Ihr Dienstprinzipal nicht über die erforderlichen Berechtigungen zum Abrufen der Objekt-ID des benutzerdefinierten Speicherorts. Melden Sie sich mit einem Microsoft Entra-Benutzerkonto bei Azure CLI an, das die Voraussetzungen erfüllt. Weitere Informationen finden Sie unter Erstellen und Verwalten von benutzerdefinierten Speicherorten.

  10. Verwenden Sie den Befehl az connectedk8s enable-features, um die Funktion für benutzerdefinierte Speicherorte für Ihren Arc-Cluster zu aktivieren. Dieser Befehl verwendet die im vorherigen Schritt gespeicherte Variable OBJECT_ID environment, um den Wert für den Parameter custom-locations-oid festzulegen. Führen Sie diesen Befehl auf dem Computer aus, auf dem Sie den Kubernetes-Cluster bereitgestellt haben:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Starten Sie K3s neu.

    systemctl restart k3s
    

Konfigurieren von Azure Container Storage mit Azure Arc-Unterstützung

Features wie lokale Speicherendpunkte für den Datenfluss und der Medienconnector verwenden optional Azure Containerspeicher, der von Azure Arc (ACSA) aktiviert ist, um lokale Daten mit der Cloud zu synchronisieren. ACSA wird nicht als Teil von Azure IoT Einsatz installiert, daher musst du es separat installieren.

Um zu lernen, wie man ACSA auf Ihrem Kubernetes-Cluster installiert:

Nächste Schritte

Nachdem Sie nun über einen Azure Arc-aktivierten Kubernetes-Cluster verfügen, können Sie Azure IoT Einsatz bereitstellen.