Schnellstart: Herstellen einer Verbindung eines vorhandenen Kubernetes-Clusters mit Azure Arc

In dieser Anleitung erfahren Sie, wie Sie für einen vorhandenen Kubernetes-Cluster mithilfe der Azure CLI oder von Azure PowerShell eine Verbindung mit Azure Arc herstellen.

Einen allgemeinen Überblick über das Herstellen einer Verbindung zwischen einem Cluster und Azure Arc finden Sie unter Übersicht über Kubernetes-Agents mit Azure Arc-Unterstützung. Informationen zum Ausprobieren von Dingen in einer Beispiel-/Übungsumgebung finden Sie unter Azure Arc-Jumpstart.

Voraussetzungen

Wichtig

Stellen Sie zusätzlich zu diesen Voraussetzungen sicher, dass alle Netzwerkanforderungen für Kubernetes mit Azure Arc-Unterstützung erfüllt werden.

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.

  • Grundkenntnisse im Umgang mit grundlegenden Kubernetes-Konzepten für AKS.

  • Eine Identität (Benutzer oder Dienstprinzipal), die verwendet werden kann, um sich bei der Azure CLI anzumelden und Ihren Cluster mit Azure Arc zu verbinden.

  • Die neueste Version von Azure CLI.

  • Die neueste Version der Azure CLI-Erweiterung connectedk8s, die durch Ausführen des folgenden Befehls installiert wird:

    az extension add --name connectedk8s
    
  • Ein funktionierender Kubernetes-Cluster. Wenn Sie über keinen verfügen, haben Sie die folgenden drei Möglichkeiten, um einen Cluster zu erstellen:

    • Kubernetes in Docker (KIND)

    • Erstellen eines Kubernetes-Clusters mithilfe von Docker für Mac oder Windows

    • Selbst verwalteter Kubernetes-Cluster mithilfe der Cluster-API

      Hinweis

      Der Cluster muss mindestens einen Knoten des Betriebssystems und den Architekturtyp linux/amd64 und/oder linux/arm64 aufweisen. Weitere Informationen zu ARM64-Szenarien finden Sie unter Clusteranforderungen.

  • Mindestens 850 MB freier Speicherplatz für die Arc-Agents, die auf dem Cluster bereitgestellt werden, und eine Kapazität, die etwa 7 % einer einzelnen CPU verwendet.

  • Eine Kubeconfig-Datei und ein Kontext, der auf Ihren Cluster verweist. Weitere Informationen dazu, was eine KUBECONFIG-Datei ist und wie Sie den Kontext so festlegen, dass er auf Ihren Cluster verweist, finden Sie in diesem Artikel.

Registrieren von Anbietern für Kubernetes mit Azure Arc-Unterstützung

  1. Geben Sie die folgenden Befehle ein:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Überwachen Sie den Registrierungsprozess. Die Registrierung kann bis zu 10 Minuten dauern.

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    Nach der Registrierung sollte der RegistrationState-Status für diese Namespaces in Registered geändert werden.

Erstellen einer Ressourcengruppe

Führen Sie den folgenden Befehl aus:

az group create --name AzureArcTest --location EastUS --output table

Ausgabe:

Location    Name
----------  ------------
eastus      AzureArcTest

Herstellen der Verbindung mit einem vorhandenen Kubernetes-Cluster

Führen Sie den folgenden Befehl aus, um die Verbindung mit Ihrem Cluster herzustellen. Dieser Befehl stellt die Azure Arc-Agents im Cluster bereit und installiert Helm v. 3.6.3 im Ordner .azure des Bereitstellungscomputers. Diese Helm 3-Installation wird nur für Azure Arc verwendet und entfernt oder ändert keine zuvor installierten Versionen von Helm auf dem Computer.

In diesem Beispiel lautet der Name des Clusters AzureArcTest1.

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

Ausgabe:

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

Tipp

Mit dem obigen Befehl ohne den angegebenen Ortsparameter wird die Kubernetes-Ressource mit Azure Arc-Unterstützung am gleichen Standort wie die Ressourcengruppe erstellt. Wenn Sie die Kubernetes-Ressource mit Azure Arc-Unterstützung an einem anderen Standort erstellen möchten, geben Sie bei Ausführung des Befehls az connectedk8s connect entweder --location <region> oder -l <region> an.

Wichtig

Wenn die Bereitstellung aufgrund eines Timeouts fehlschlägt, finden Sie weitere Informationen zum Beheben dieses Problems in unserem Leitfaden zur Problembehandlung.

Herstellen einer Verbindung mit einem ausgehenden Proxyserver

Befindet sich Ihr Cluster hinter einem ausgehenden Proxyserver, müssen Anforderungen über diesen weitergeleitet werden.

  1. Legen Sie auf dem Bereitstellungscomputer die für Azure CLI erforderlichen Umgebungsvariablen fest, um den ausgehenden Proxyserver zu verwenden:

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. Führen Sie im Kubernetes-Cluster den Befehl „connect“ mit den angegebenen Parametern proxy-https und proxy-http aus. Wenn Ihr Proxyserver sowohl mit HTTP als auch mit HTTPS eingerichtet ist, müssen Sie --proxy-http für den HTTP-Proxy und --proxy-https für den HTTPS-Proxy verwenden. Wenn Ihr Proxyserver nur HTTP verwendet, können Sie diesen Wert für beide Parameter verwenden.

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

Hinweis

  • Einige Netzwerkanforderungen, z. B. diejenigen, die die Kommunikation zwischen Diensten im Cluster betreffen, müssen von dem Datenverkehr getrennt werden, der für die ausgehende Kommunikation über den Proxyserver weitergeleitet wird. Der --proxy-skip-range-Parameter kann verwendet werden, um den CIDR-Bereich und die Endpunkte durch Kommas getrennt anzugeben, sodass die Kommunikation zwischen den Agents und diesen Endpunkten nicht über den ausgehenden Proxy erfolgt. Mindestens der CIDR-Bereich der Dienste im Cluster sollte als Wert für diesen Parameter angegeben werden. Angenommen, kubectl get svc -A gibt eine Liste von Diensten zurück, wobei alle Dienste ClusterIP-Werte im Bereich 10.0.0.0/16 aufweisen. Der Wert, der dann für --proxy-skip-range angegeben werden soll, ist 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc.
  • --proxy-http, --proxy-https und --proxy-skip-range werden für die meisten ausgehenden Proxyumgebungen erwartet. --proxy-cert ist nur erforderlich, wenn Sie vertrauenswürdige Zertifikate, die vom Proxy erwartet werden, in den vertrauenswürdigen Zertifikatspeicher der Agent-Pods einfügen müssen.
  • Der Proxy für ausgehenden Datenverkehr muss so konfiguriert werden, dass websocket-Verbindungen zulässig sind.

Für ausgehende Proxyserver, bei denen nur ein vertrauenswürdiges Zertifikat ohne die Endpunkteingaben des Proxyservers bereitgestellt werden muss, kann az connectedk8s connect mit --proxy-cert als alleiniger Eingabe ausgeführt werden. Falls mehrere vertrauenswürdige Zertifikate erwartet werden, kann die kombinierte Zertifikatkette mithilfe des Parameters --proxy-cert in einer einzelnen Datei bereitgestellt werden.

Hinweis

  • --custom-ca-cert ist ein Alias für --proxy-cert. Beide Parameter können austauschbar verwendet werden. Wenn beide Parameter im selben Befehl übergeben werden, wird der zuletzt übergebene Parameter angewandt.

Führen Sie den connect-Befehl mit angegebene Parameter --proxy-cert aus:

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Überprüfen der Clusterverbindung

Führen Sie den folgenden Befehl aus:

az connectedk8s list --resource-group AzureArcTest --output table

Ausgabe:

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

Hinweis

Nach dem Onboarding des Clusters dauert es ungefähr 5 bis 10 Minuten, bis die Clustermetadaten (Clusterversion, Agent-Version, Anzahl der Knoten usw.) auf der Übersichtsseite der Kubernetes-Ressource, für die Azure Arc aktiviert ist, im Azure-Portal angezeigt wird.

Tipp

Hilfe bei der Behandlung von Problemen beim Herstellen einer Verbindung mit Ihrem Cluster finden Sie unter Diagnostizieren von Verbindungsproblemen für Kubernetes-Cluster mit Azure Arc-Unterstützung.

Anzeigen von Azure Arc-Agents für Kubernetes

Azure Arc-fähiges Kubernetes stellt verschiedene Agents im Namespace azure-arc bereit.

  1. Zeigen Sie diese Bereitstellungen und Pods wie folgt an:

    kubectl get deployments,pods -n azure-arc
    
  2. Vergewissern Sie sich, dass alle Pods den Zustand Running aufweisen.

    Ausgabe:

     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    

Weitere Informationen zu diesen Agents finden Sie unter Übersicht über Kubernetes-Agents mit Azure Arc-Unterstützung.

Bereinigen von Ressourcen

Sie können die Kubernetes-Ressource mit Azure Arc-Aktivierung, alle zugeordneten Konfigurationsressourcen und alle Agents, die auf dem Cluster ausgeführt werden, mit der Azure CLI mit dem folgenden Befehl löschen:

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

Wenn der Löschvorgang fehlschlägt, verwenden Sie den folgenden Befehl, um das Löschen zu erzwingen (fügen Sie -y hinzu, wenn Sie die Bestätigungsaufforderung umgehen möchten):

az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force

Dieser Befehl kann auch verwendet werden, wenn Probleme beim Erstellen einer neuen Clusterbereitstellung auftreten (aufgrund zuvor erstellter Ressourcen, die nicht vollständig entfernt wurden).

Hinweis

Wenn Sie die Kubernetes-Ressource mit Azure Arc-Unterstützung über das Azure-Portal löschen, werden alle zugehörigen Konfigurationsressourcen entfernt, jedoch keine Agents, die auf dem Cluster ausgeführt werden. Als bewährte Methode wird empfohlen, die Kubernetes-Ressource mit Azure Arc-Unterstützung stattdessen mithilfe von az connectedk8s delete zu löschen.

Nächste Schritte