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.
Voraussetzungen
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 Azure CLI anzumelden und Ihren Cluster mit Azure Arc zu verbinden.
Wichtig
- Die verwendete Identität muss über die Berechtigungen „Lesen“ und „Schreiben“ für den Azure Arc-fähigen Kubernetes-Ressourcentyp (
Microsoft.Kubernetes/connectedClusters
) verfügen. - Die integrierte Rolle „Kubernetes-Cluster – Azure Arc Onboarding“ kann für diese Identität verwendet werden. Diese Rolle ist für das Onboarding im großen Stil nützlich, da sie genau nur über die Berechtigungen verfügt, die erforderlich sind, um Cluster mit Azure Arc zu verbinden. Diese Rolle weist keine Berechtigungen zum Aktualisieren, Löschen oder Ändern anderer Cluster oder anderer Azure-Ressourcen auf.
- Die verwendete Identität muss über die Berechtigungen „Lesen“ und „Schreiben“ für den Azure Arc-fähigen Kubernetes-Ressourcentyp (
Installieren Sie die Azure-Befehlszeilenschnittstelle, oder upgraden Sie sie auf die neueste Version.
Installieren Sie die neueste Version der Azure CLI-Erweiterung connectedk8s:
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:
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 des Architektur Typs
linux/amd64
aufweisen. Cluster mit nurlinux/arm64
-Knoten werden noch nicht unterstützt.
Eine Kubeconfig-Datei und ein Kontext, der auf Ihren Cluster verweist.
Installieren Sie Helm 3. Stellen Sie sicher, dass die Helm 3-Version < 3.7.0 ist.
Registrieren von Anbietern für Kubernetes mit Azure Arc-Unterstützung
Geben Sie die folgenden Befehle ein:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.KubernetesConfiguration az provider register --namespace Microsoft.ExtendedLocation
Ü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 inRegistered
geändert werden.
Erfüllen von Netzwerkanforderungen
Wichtig
Azure Arc-Agents müssen über die folgenden ausgehenden URLs unter https://:443
verfügen, um zu funktionieren:
Für *.servicebus.windows.net
müssen Websockets für den ausgehenden Zugriff auf die Firewall und den Proxy aktiviert werden.
Endpunkt (DNS) | BESCHREIBUNG |
---|---|
https://management.azure.com (für Azure Cloud), https://management.usgovcloudapi.net (für Azure US Government) |
Erforderlich, damit der Agent eine Verbindung mit Azure herstellen und den Cluster registrieren kann. |
https://<region>.dp.kubernetesconfiguration.azure.com (für Azure Cloud), https://<region>.dp.kubernetesconfiguration.azure.us (für Azure US Government) |
Endpunkt auf Datenebene, über den der Agent Statusinformationen mithilfe von Push übermitteln und Konfigurationsinformationen abrufen kann |
https://login.microsoftonline.com , https://<region>.login.microsoft.com , login.windows.net (für Azure Cloud), https://login.microsoftonline.us , <region>.login.microsoftonline.us (für Azure US Government) |
Erforderlich zum Abrufen und Aktualisieren von Azure Resource Manager-Token. |
https://mcr.microsoft.com , https://*.data.mcr.microsoft.com |
Erforderlich zum Pullen von Containerimages für Azure Arc-Agents. |
https://gbl.his.arc.azure.com (für Azure Cloud), https://gbl.his.arc.azure.us (für Azure US Government) |
Erforderlich, um den regionalen Endpunkt zum Abrufen von Zertifikaten systemseitig zugewiesener verwalteter Identitäten per Pull zu erhalten. |
https://*.his.arc.azure.com (für Azure Cloud), https://usgv.his.arc.azure.us (für Azure US Government) |
Erforderlich zum Pullen vom System zugewiesener Zertifikate für verwaltete Identitäten. |
https://k8connecthelm.azureedge.net |
az connectedk8s connect verwendet Helm 3 zum Bereitstellen von Azure Arc-Agents im Kubernetes-Cluster. Dieser Endpunkt wird für den Helm-Clientdownload benötigt, um die Bereitstellung des Helm-Charts für den Agent zu vereinfachen. |
guestnotificationservice.azure.com , *.guestnotificationservice.azure.com , sts.windows.net , https://k8sconnectcsp.azureedge.net |
Für Szenarien, die auf Cluster Connect und benutzerdefinierten Speicherorten basieren. |
*.servicebus.windows.net |
Für Szenarien, die auf Cluster Connect und benutzerdefinierten Speicherorten basieren. |
https://graph.microsoft.com/ |
Erforderlich, wenn Azure RBAC konfiguriert ist |
Hinweis
Um den Platzhalter *.servicebus.windows.net
in bestimmte Endpunkte zu übersetzen, verwenden Sie den Befehl \GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. In diesem Befehl muss der Bereich für den Platzhalter <location>
angegeben werden.
Wichtig
Um verbundene Cluster im Azure-Portal anzuzeigen und zu verwalten, stellen Sie sicher, dass Ihr Netzwerk Datenverkehr an *.arc.azure.net
zulässt.
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:
az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest
Hinweis
Wenn Sie mithilfe eines Dienstprinzipals bei der Azure CLI angemeldet sind, muss ein zusätzlicher Parameter festgelegt werden, um das Feature für benutzerdefinierte Standorte im Cluster zu aktivieren.
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
In einigen Fällen kann die Bereitstellung aufgrund eines Timeoutfehlers fehlschlagen. Ausführliche Informationen zum Beheben dieses Problems finden Sie 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.
Legen Sie 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>
Führen Sie den connect-Befehl mit angegebenen Parametern
proxy-https
undproxy-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 Bereich10.0.0.0/16
aufweisen. Der Wert, der dann für--proxy-skip-range
angegeben werden soll, ist10.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
Kubernetes mit Azure Arc-Unterstützung stellt einige Agents im Namespace azure-arc
bereit.
Zeigen Sie diese Bereitstellungen und Pods wie folgt an:
kubectl get deployments,pods -n azure-arc
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 -g AzureArcTest1 -n 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
Fahren Sie mit dem nächsten Artikel fort, um zu erfahren, wie Sie Konfigurationen mithilfe von GitOps für Ihren verbundenen Kubernetes-Cluster bereitstellen.