Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
CanIPull ist ein Diagnosetool für Azure Kubernetes Service (AKS). Stellen Sie sie mithilfe von Azure Copilot oder dem vollständigen Kubernetes-Manifest in diesem Artikel bereit. CanIPull liest die Clusteridentitätskonfiguration von einem ausgewählten Knoten aus, überprüft die DNS-Auflösung für einen Authentifizierungsserver (Azure Container Registry, ACR) und überprüft den anfänglichen ACR-Tokenaustausch.
In diesem Artikel erfahren Sie, wie Sie CanIPull mithilfe von Azure Copilot oder einem Kubernetes-Manifest ausführen. CanIPull v0.1.0 wird jeweils auf einem AMD64 Linux-Knoten ausgeführt. Wiederholen Sie die Überprüfung auf anderen unterstützten Knoten, um ihre Konnektivität oder Konfiguration zu vergleichen.
Important
CanIPull ist kein End-to-End-Test zum Abrufen eines Images. Ein erfolgreiches Ergebnis bestätigt nicht den Zugriff auf ein Repository, ein Bildmanifest oder eine Bildebene, da CanIPull kein Bild auswählt oder abruft.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie Folgendes:
- Ein vorhandener AKS-Cluster mit mindestens einem AMD64 Linux-Knoten.
- Eine vorhandene ACR-Instanz, die Sie testen möchten.
Um CanIPull mit Azure Copilot bereitzustellen, benötigen Sie auch Zugriff auf Azure Copilot im Azure-Portal.
Um CanIPull manuell bereitzustellen, benötigen Sie auch Folgendes:
- Azure CLI installiert.
- Eine authentifizierte Azure CLI Sitzung mit Berechtigungen zum Abrufen von Benutzeranmeldeinformationen für den AKS-Cluster und Lesen der ACR-Instanz.
-
kubectlkonfiguriert, um eine Verbindung mit Ihrem AKS-Cluster herzustellen. - Kubernetes-Berechtigungen zum Auflisten von Knoten auf Clusterebene; zum Erstellen, Abrufen, Auflisten, Überwachen und Löschen von Pods im Namespace
default; sowie zum Abrufen von Protokollen von Pods im Namespacedefault.
Bereitstellen von CanIPull mit Azure Copilot
Azure Copilot kann den AKS-Cluster, den AMD64-Linux-Knoten und den ACR-Authentifizierungsserver auswählen und dann CanIPull für Sie bereitstellen. Die Diagnose überprüft die DNS-Auflösung und den ACR-Tokenaustausch vom ausgewählten Knoten. Es wählt oder greift nicht auf ein Repository oder Bild zu.
- Öffnen Sie im Azure-Portal Copilot.
- Geben Sie eine der folgenden Eingabeaufforderungen ein:
Help me deploy CanIPull to my AKS cluster.Can an AMD64 Linux node in my AKS cluster resolve and authenticate to a specific Azure Container Registry?Help me test ACR token exchange from an AMD64 Linux node in my AKS cluster.
- Wählen Sie den AKS-Cluster und den AMD64 Linux-Knoten aus, auf dem CanIPull ausgeführt werden soll.
- Wählen Sie die ACR-Instanz aus, deren Authentifizierungsserver Sie für die DNS- und Tokenaustauschprüfungen verwenden möchten.
- Überprüfen Sie die Auswahl, und bestätigen Sie dann die Bereitstellung.
- Nachdem die Bereitstellung abgeschlossen ist, folgen Sie der Aufforderung, um den Bereich „Befehl ausführen“ zu öffnen.
- Überprüfen Sie die CanIPull-Protokolle für DNS-, Clusteridentitäts- und ACR-Tokenaustauschergebnisse.
Weitere Informationen zu dieser Nutzung finden Sie unter Verwenden von CanIPull mit Azure Copilot.
CanIPull manuell bereitstellen
Um CanIPull manuell bereitzustellen, stellen Sie eine Verbindung mit dem Cluster her, wählen Sie einen AMD64-Linux-Knoten aus, rufen Sie den vollqualifizierten ACR-Anmeldeserver ab, speichern Sie das vollständige Pod-Manifest, das in diesem Abschnitt angegeben ist, als canipull.yaml und führen Sie kubectl apply --filename canipull.yaml aus. Mit dem one-shot-Pod können Sie den Zielknoten auswählen und die Diagnoseprotokolle direkt prüfen mit kubectl.
Important
Das Manifest bindet /etc/kubernetes/azure.json vom ausgewählten Knoten ein. Diese Datei enthält die Konfiguration vertraulicher Clusteridentitäten. Stellen Sie den Pod nur bereit, wenn Sie ein vertrauenswürdiger Clusteradministrator sind. Erhöhen Sie die Ausführlichkeit von CanIPull nicht, da höhere Ebenen Zugriffstoken drucken können. Löschen Sie den Pod, sobald Sie den Test abgeschlossen haben.
Herstellen einer Verbindung mit dem Cluster und Auswählen eines Knotens
Legen Sie Variablen für die AKS-Cluster- und ACR-Instanz fest.
RESOURCE_GROUP=<resource-group> CLUSTER_NAME=<aks-cluster-name> ACR_NAME=<acr-name>Rufen Sie die Clusteranmeldeinformationen ab.
az aks get-credentials \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAMERufen Sie den ACR-Anmeldeserver ab. CanIPull erwartet den vollqualifizierten Anmeldeserver, wie
myregistry.azurecr.io, anstelle des ACR-Ressourcennamens.ACR_LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --query loginServer \ --output tsv) echo $ACR_LOGIN_SERVERListen Sie die AMD64 Linux-Knoten auf, und wählen Sie den Knoten aus, auf dem Sie die Diagnoseüberprüfung ausführen möchten. CanIPull
v0.1.0unterstützt nur AMD64-Knoten.kubectl get nodes \ --selector kubernetes.io/os=linux,kubernetes.io/arch=amd64 \ --output wide
Erstellen und Bereitstellen des vollständigen CanIPull-Manifests
Kopieren Sie das vollständige Manifest in eine Datei mit dem Namen
canipull.yaml. Ersetzen Sie<target-linux-node>und<acr-login-server>durch den Knotennamen und den ACR-Anmeldeserver aus dem vorherigen Abschnitt. Das Manifest bindet CanIPull an den ausgewählten Knoten, deaktiviert das Einbinden des Dienstkontotokens und die Berechtigungseskalation und bindet die erforderliche Knotenkonfiguration schreibgeschützt ein.apiVersion: v1 kind: Pod metadata: name: canipull namespace: default labels: app: canipull spec: automountServiceAccountToken: false nodeName: <target-linux-node> restartPolicy: Never containers: - name: canipull image: mcr.microsoft.com/aks/canipull:v0.1.0 imagePullPolicy: IfNotPresent args: - <acr-login-server> securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true volumeMounts: - name: azure-config mountPath: /etc/kubernetes/azure.json readOnly: true volumes: - name: azure-config hostPath: path: /etc/kubernetes/azure.json type: FileErstellen Sie den Pod.
kubectl apply --filename canipull.yamlWarten Sie, bis der Pod fertig ist.
kubectl get pod canipull --watchDrücken Sie STRG+C, wenn der Pod-Status zu
CompletedoderErrorwechselt.
Überprüfen der CanIPull-Ergebnisse
Zeigen Sie die Diagnoseausgabe an.
kubectl logs canipull
Ein erfolgreicher Test enthält die folgenden Ergebnisse:
- Der ACR-Authentifizierungsserver wird über DNS aufgelöst.
- CanIPull liest die Azure Konfiguration aus dem Knoten.
- Die Kubelet-Identität oder der Dienstprinzipal des Clusters können sich authentifizieren.
- ACR akzeptiert den anfänglichen Tokenaustausch.
Diese Ergebnisse bestätigen nur, dass der ausgewählte Knoten den ACR-Authentifizierungsserver auflösen kann und dass die Clusteridentität den anfänglichen Tokenaustausch abschließen kann. CanIPull ruft kein Bild ab oder überprüft den Zugriff auf ein Repository, ein Bildmanifest oder eine Bildebene.
Die endgültige Erfolgsmeldung des Tools verwendet breitere Formulierungen als den Umfang des Tests und ähnelt der folgenden Ausgabe:
Your cluster can pull images from <acr-login-server>!
Um einen End-to-End-Image-Pull zu überprüfen, stellen Sie eine Workload bereit, die auf ein Image im Ziel-Repository verweist.
Wenn der Test fehlschlägt, überprüfen Sie die markierte FAILEDProtokollzeile. Häufige Ursachen sind:
- Der ACR-Authentifizierungsserver wird nicht vom ausgewählten Knoten aufgelöst.
- Der ausgewählte Knoten enthält
/etc/kubernetes/azure.jsonnicht. - Die Anmeldeinformationen für die Clusteridentität sind ungültig.
- ACR lehnt den Tokenaustausch für die Kubelet-Identität oder den Dienstprinzipal ab.
Wenn der Tokenaustausch fehlschlägt, da die Identität nicht für den Zugriff auf ACR autorisiert ist, lesen Sie "Authentifizieren mit ACR von AKS".
Bereinigen von Ressourcen
Löschen Sie den CanIPull-Pod, und entfernen Sie dessen Zugriff auf die Knotenkonfiguration.
kubectl delete pod canipull