Erstellen von Kubernetes-Clustern mit Azure CLI
Gilt für: Azure Local, Version 23H2
In diesem Artikel wird beschrieben, wie Kubernetes-Cluster in Azure Local mit Azure CLI erstellt werden. Der folgende Workflow wird verwendet:
- Erstellen Sie einen Kubernetes-Cluster in Azure Local, Version 23H2 mit Azure CLI. Der Cluster ist standardmäßig mit Azure Arc verbunden.
- Beim Erstellen des Clusters stellen Sie eine Microsoft Entra-Gruppe bereit, die die Liste der Microsoft Entra-Benutzer mit Kubernetes-Clusteradministratorzugriff enthält.
- Greifen Sie mithilfe von Kubectl und Ihrer Microsoft Entra-ID auf den Cluster zu.
- Führen Sie eine Beispielanwendung mit mehreren Containern im Cluster aus, die ein Web-Front-End und eine Redis-Instanz enthält.
Voraussetzungen
- Bevor Sie beginnen, stellen Sie sicher, dass Sie über die folgenden Details von Ihrem lokalen Infrastrukturadministrator verfügen:
- Azure-Abonnement-ID – Die Azure-Abonnement-ID , in der Azure Local für die Bereitstellung und Registrierung verwendet wird.
- Benutzerdefinierte Standort-ID – Azure Resource Manager-ID des benutzerdefinierten Speicherorts. Der benutzerdefinierte Speicherort wird während der Azure Local Cluster-Bereitstellung konfiguriert. Ihr Infrastrukturadministrator sollte Ihnen die Ressourcen-Manager-ID des benutzerdefinierten Speicherorts geben. Dieser Parameter ist erforderlich, um Kubernetes-Cluster zu erstellen. Sie können auch die Ressourcen-Manager-ID verwenden
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
, wenn der Infrastrukturadministrator einen benutzerdefinierten Standortnamen und Ressourcengruppennamen bereitstellt. - Netzwerk-ID – Azure Resource Manager-ID des logischen Azure-Netzwerks, das mit diesen Schritten erstellt wurde. Ihr Administrator sollte Ihnen die ID des logischen Netzwerks geben. Dieser Parameter ist erforderlich, um Kubernetes-Cluster zu erstellen. Sie können auch die Azure Resource Manager-ID abrufen
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv
, wenn Sie die Ressourcengruppe kennen, in der das logische Netzwerk erstellt wurde.
- Sie können die Schritte in diesem Artikel auf einem lokalen Entwicklungscomputer ausführen, um einen Kubernetes-Cluster in Ihrer lokalen Azure-Remotebereitstellung zu erstellen. Stellen Sie sicher, dass Sie die neueste Version von Az CLI auf Ihrem Entwicklungscomputer haben. Sie können sich auch dafür entscheiden, Ihre Az CLI-Version mit
az upgrade
zu aktualisieren. - Um von überall aus eine Verbindung mit dem Kubernetes-Cluster herzustellen, erstellen Sie eine Microsoft Entra-Gruppe, und fügen Sie ihr Mitglieder hinzu. Alle Mitglieder in der Microsoft Entra-Gruppe haben Clusteradministratorzugriff auf den Cluster. Stellen Sie sicher, dass Sie sich selbst als Mitglied zur Microsoft Entra-Gruppe hinzufügen. Wenn Sie sich nicht selbst hinzufügen, können Sie nicht mithilfe von Kubectl auf den Kubernetes-Cluster zugreifen. Weitere Informationen zum Erstellen von Microsoft Entra-Gruppen und zum Hinzufügen von Benutzern finden Sie unter Verwalten von Microsoft Entra-Gruppen und Gruppenmitgliedschaften.
- Laden Sie Kubectl auf Ihrem Entwicklungscomputer herunter, und installieren Sie es. Mit dem Befehlszeilentool Kubernetes, Kubectl, können Sie Befehle für Kubernetes-Cluster ausführen. Sie können Kubectl verwenden, um Anwendungen bereitzustellen, Clusterressourcen zu prüfen und zu verwalten und Protokolle anzuzeigen.
Installieren der Azure CLI-Erweiterung
Führen Sie den folgenden Befehl aus, um die erforderlichen Azure CLI-Erweiterungen zu installieren:
az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade
Erstellen eines Kubernetes-Clusters
Verwenden Sie den az aksarc create
Befehl, um einen Kubernetes-Cluster in AKS Arc zu erstellen. Stellen Sie sicher, dass Sie sich bei Azure anmelden, bevor Sie diesen Befehl ausführen. Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie mithilfe des Befehls az account set das entsprechende Abonnement ID aus.
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben.
Hinweis
- Der SSH-Schlüsselwert ist der öffentliche Schlüssel für den Zugriff auf Knoten im bereitgestellten Cluster. Dieser Schlüssel befindet sich standardmäßig unter
~/.ssh/id_rsa.pub
. Sie können einen anderen Speicherort mithilfe des Parameters während der--ssh-key-value
Clustererstellung angeben. - Der
--generate-ssh-keys
Parameter ist erforderlich, wenn auf Ihrem lokalen Computer kein bereits vorhandener SSH-Schlüssel vorhanden ist. Wenn Sie diesen Parameter während der Clustererstellung nicht einschließen und kein SSH-Schlüssel vorhanden ist, wird eine Fehlermeldung angezeigt. - Wenn Sie bereits über einen SSH-Schlüssel auf Ihrem lokalen Computer verfügen, verwendet der AKS-Cluster diesen Schlüssel wieder. In diesem Fall hat das Angeben
--generate-ssh-keys
oder Weglassen dieses Parameters keine Auswirkung.
Wichtig
Um die Azure RBAC- oder Workload-Identität für einen AKS-Cluster zu verwenden, müssen Sie die erforderlichen Parameter während der Clustererstellung mithilfe der Azure CLI übergeben. Derzeit wird das Aktualisieren eines vorhandenen AKS-Clusters zum Aktivieren der Workloadidentität und/oder des Azure RBAC nicht unterstützt. Weitere Informationen finden Sie unter Verwenden von Azure RBAC für Kubernetes-Autorisierung oder Bereitstellen und Konfigurieren der Workload-Identität für Ihren Cluster.
Herstellen einer Verbindung mit dem Kubernetes-Cluster
Jetzt können Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen, indem Sie den az connectedk8s proxy
Befehl von Ihrem Entwicklungscomputer aus ausführen. Stellen Sie sicher, dass Sie sich bei Azure anmelden, bevor Sie diesen Befehl ausführen. Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie mithilfe des Befehls az account set das entsprechende Abonnement ID aus.
Dieser Befehl lädt die Kubeconfig Ihres Kubernetes-Clusters auf Ihren Entwicklungscomputer herunter und öffnet einen Proxyverbindungskanal zu Ihrem lokalen Kubernetes-Cluster. Der Kanal ist so lange geöffnet, wie der Befehl ausgeführt wird. Führen Sie den Befehl so lange aus, wie Sie auf Ihren Cluster zugreifen möchten. Wenn das Fenster ausläuft, schließen Sie das CLI-Fenster, öffnen Sie ein neues Fenster, und führen Sie den Befehl erneut aus.
Sie müssen über Mitwirkendeberechtigungen für die Ressourcengruppe verfügen, die den Kubernetes-Cluster hosten, um den folgenden Befehl erfolgreich auszuführen:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Erwartete Ausgabe:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.
Führen Sie diese Sitzung aus, und stellen Sie eine Verbindung mit Ihrem Kubernetes-Cluster über eine andere Terminal-/Eingabeaufforderung her. Stellen Sie sicher, dass Sie eine Verbindung mit Ihrem Kubernetes-Cluster herstellen können, indem Sie den Befehl "kubectl get" ausführen. Dieser Befehl gibt eine Liste der Clusterknoten zurück:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
Das folgende Ausgabebeispiel zeigt den knoten, der in den vorherigen Schritten erstellt wurde. Stellen Sie sicher, dass der Knotenstatus Bereit lautet:
NAME STATUS ROLES AGE VERSION
moc-l0ttdmaioew Ready control-plane,master 34m v1.24.11
moc-ls38tngowsl Ready <none> 32m v1.24.11
Bereitstellen der Anwendung
Eine Kubernetes-Manifestdatei definiert den gewünschten Zustand (Desired State) eines Clusters – also beispielsweise, welche Containerimages ausgeführt werden sollen.
Sie können ein Manifest verwenden, um alle Objekte zu erstellen, die zum Ausführen der Azure-Abstimmungsanwendung erforderlich sind. Dieses Manifest umfasst zwei Kubernetes-Bereitstellungen:
- Die Azure Vote-Python-Beispielanwendungen
- Eine Redis-Instanz
Zwei Kubernetes-Dienste werden ebenfalls erstellt:
- Ein interner Dienst für die Redis-Instanz
- Ein externer Dienst für den Zugriff auf die Azure Vote-Anwendung über das Internet
Erstellen Sie eine Datei namens "azure-vote.yaml", und kopieren Sie sie im folgenden Manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: <path to image>/oss/bitnami/redis:6.0.8
env:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Stellen Sie die Anwendung mithilfe des kubectl apply-Befehls bereit, und geben Sie den Namen Ihres YAML an:
kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config
Die folgende Beispielausgabe zeigt die erfolgreich erstellten Bereitstellungen und Dienste:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Testen der Anwendung
Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern.
Überwachen Des Fortschritts mithilfe des Kubectl-Get-Dienstbefehls mit dem --watch
Argument.
kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config
Die EXTERNAL-IP-Ausgabe für den Azure-Abstimmungs-Front-Dienst wird zunächst als ausstehend angezeigt.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Sobald sich die EXTERNAL-IP-Adresse von einer tatsächlichen öffentlichen IP-Adresse ändert, verwenden Sie STRG-C, um den Kubectl-Überwachungsvorgang zu beenden. Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Öffnen Sie die externe IP-Adresse Ihres Diensts in einem Webbrowser, um die Azure-Abstimmungs-App in Aktion zu sehen.
Löschen des Clusters
Führen Sie den az aksarc delete
Befehl aus, um den erstellten Cluster zu bereinigen:
az aksarc delete --resource-group $aksclustername --name $resource_group