Freigeben über


Vorbereiten Ihres Azure Arc-fähigen Kubernetes-Clusters

Ein Azure Arc-fähiger Kubernetes-Cluster ist eine Voraussetzung für die Bereitstellung von „Azure IoT Einsatz“. In diesem Artikel wird beschrieben, wie Sie einen Cluster vorbereiten, bevor Sie „Azure IoT Einsatz“ bereitstellen. Dieser Artikel enthält Anleitungen für Ubuntu, Windows, Azure Local und Tanzu Kubernetes Grid (TKG).

Die Schritte in diesem Artikel bereiten Ihren Cluster auf eine Bereitstellung mit sicheren Einstellungen vor, was ein längerer, aber produktionsbereiter Prozess ist. Wenn Sie „Azure IoT Einsatz“ schnell bereitstellen und eine Beispielworkload nur mit Testeinstellungen ausführen möchten, informieren Sie sich stattdessen im Schnellstart: Ausführen von „Azure IoT Einsatz“ in GitHub Codespaces mit K3s. Weitere Informationen zu Testeinstellungen und sicheren Einstellungen finden Sie unter Bereitstellungsdetails > Auswählen Ihrer Features.

Voraussetzungen

Microsoft unterstützt Azure Kubernetes Service (AKS) Edge Essentials für Bereitstellungen unter Windows, K3s für Bereitstellungen auf Ubuntu, AKS-Bereitstellungen auf Azure Local und Tanzu Kubernetes Release (TKr) auf TKG. Wenn Sie „Azure IoT Einsatz“ in einer Lösung mit mehreren Knoten bereitstellen möchten, verwenden Sie K3s auf Ubuntu.

Zum Vorbereiten eines Azure Arc-fähigen Kubernetes-Clusters benötigen Sie:

  • Ein Azure-Abonnement mit der Rolle "Besitzer" oder einer Kombination aus den Rollen Mitwirkender und Benutzerzugriffsadministrator. Sie können Ihre Zugriffsebene überprüfen, indem Sie zu Ihrem Abonnement navigieren, auf der linken Seite der Azure-Portal die Zugriffssteuerung (ACCESS Control, IAM) auswählen und dann "Meinen Zugriff anzeigen" auswählen. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Abonnement erstellen, bevor Sie beginnen.

  • 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. Die Liste der aktuell unterstützten Azure-Regionen finden Sie unter Unterstützte Regionen.

    az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
    
  • Azure CLI, Version 2.62.0 oder höher, auf Ihrem Clustercomputer installiert. 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 Installieren der Azure CLI.

  • Die neueste Version der connectedk8s-Erweiterung für die Azure CLI:

    az extension add --upgrade --name connectedk8s
    

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

Dieser Abschnitt enthält Schritte zum Erstellen von Clustern in validierten Umgebungen unter Linux und Windows.

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üfen Sie, ob „kubectl“ als Teil von K3s installiert wurde. 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 YAML-Datei für die K3s-Konfiguration 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
    

Konfigurieren des Clusters als Arc-fähig

Verbinden Sie Ihren Cluster mit Azure Arc, damit er remote verwaltet werden kann.

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

    az login
    

    Wenn an irgendeinem Punkt ein Fehler angezeigt wird, der besagt, dass Ihr Gerät für den Zugriff auf Ihre Ressource verwaltet werden muss, führen Sie az login erneut aus, und stellen Sie sicher, dass Sie sich interaktiv mit einem Browser anmelden.

  2. Nachdem Sie sich angemeldet haben, zeigt die Azure CLI alle Ihre Abonnements an und kennzeichnet Ihr Standardabonnement mit einem Sternchen *. 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

    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, die in den Rollen „Mitwirkende“ 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"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Verwenden Sie den Befehl az connectedk8s connect, um Ihren Kubernetes-Cluster als Arc-fähig zu konfigurieren und ihn als Teil Ihrer Azure-Ressourcengruppe zu verwalten.

    az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --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 systemseitigen Arc-Erweiterungen zu verhindern, die „Azure IoT Einsatz“ als Abhängigkeiten verwendet, deaktiviert dieser Befehl das automatische Upgrade. Aktualisieren Sie stattdessen die Agents nach Bedarf manuell.

    Wichtig

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

    1. Befolgen Sie die Anweisungen unter Verbinden mithilfe eines ausgehenden Proxyservers oder Onboarding von Kubernetes-Clustern in Azure Arc mit Azure Arc Gateway.
    2. Fügen Sie 169.254.169.254 zum --proxy-skip-range-Parameter des az connectedk8s connect-Befehls hinzu. Azure-Geräteregistrierung 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. Erstellen Sie 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 benutzerdefinierten Speicherort des Azure Arc-Diensts auf Ihrem Arc-Cluster zu aktivieren, indem Sie die Objekt-ID für den benutzerdefinierten Speicherort abrufen und als Umgebungsvariable OBJECT_ID speichern. Sie müssen mit einem Microsoft Entra-Benutzerkonto bei der Azure CLI angemeldet sein, um den Befehl auszuführen, nicht mit einem Dienstprinzipal. 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 bei der Azure CLI mit einem Microsoft Entra-Benutzerkonto 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 OBJECT_ID-Umgebungsvariable, 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 Clustern mit mehreren Knoten für Azure Container Storage

Auf Ubuntu-Clustern mit mehreren Knoten mit mindestens drei Knoten haben Sie die Möglichkeit, die Fehlertoleranz für den Speicher mit Azure Container Storage zu aktivieren, der von Azure Arc aktiviert ist, wenn Sie Azure IoT Operations bereitstellen.

Wenn Sie die Fehlertoleranz während der Bereitstellung aktivieren möchten, konfigurieren Sie Ihre Cluster, indem Sie die Schritte in Vorbereiten von Linux für Edgevolumes mithilfe eines Ubuntu-Clusters mit mehreren Knoten ausführen.

Wenn Sie Ihren Cluster auf einer Anderen Kubernetes-Verteilung als k3s ausführen, lesen Sie die Anleitungen zum Vorbereiten von Linux mit anderen Plattformen.

Erweiterte Konfiguration

Sie verfügen jetzt über einen Azure Arc-fähigen Kubernetes-Cluster. Bevor Sie „Azure IoT Einsatz“ dafür bereitstellen, sollten Sie Ihren Cluster für erweiterte Szenarien konfigurieren.

Nächste Schritte

Sie verfügen jetzt über einen Azure Arc-fähigen Kubernetes-Cluster und können nun „Azure IoT Einsatz“ bereitstellen.