Bereitstellen eines Kubernetes-Clusters mit AKS-Engine in Azure Stack Hub
Sie können einen Kubernetes-Cluster in Azure Stack Hub von einer Client-VM bereitstellen, auf der die AKS-Engine ausgeführt wird. In diesem Artikel erfahren Sie, wie Sie eine Clusterspezifikation schreiben, einen Cluster mit der Datei apimodel.json bereitstellen und Ihren Cluster überprüfen, indem Sie MySQL mit Helm bereitstellen.
Definieren einer Clusterspezifikation
Sie können eine Clusterspezifikation in einer Dokumentdatei mithilfe des JSON-Formats namens API-Modell angeben. Die AKS-Engine verwendet eine Clusterspezifikation im API-Modell, um Ihren Cluster zu erstellen.
Beispiele für das API-Modell für Ihre Betriebssystem- und AKS-Engine-Versionsnummer für aktuelle Releases finden Sie unter AKS-Engine und entsprechende Imagezuordnung.
- Suchen Sie in der Tabelle nach der Versionsnummer der AKS-Engine (z. B.
v.0.63.0
). - Wählen Sie in der Tabelle API-Modellbeispiele den Link für Ihr Betriebssystem aus, und öffnen Sie diesen.
- Klicken Sie auf Raw (Roh). Sie können die URL in den folgenden Anweisungen verwenden.
Eine URL zum API-Modell kann wie folgt aussehen:
https://raw.githubusercontent.com/Azure/aks-engine-azurestack/master/examples/azure-stack/kubernetes-azurestack.json
Ersetzen Sie in jedem der folgenden Beispiele <URL for the API Model>
durch die URL.
Aktualisieren des API-Modells
Dieser Abschnitt zeigt das Erstellen eines API-Modells für Ihren Cluster.
Verwenden Sie zunächst eine API-Modelldatei für Azure Stack Hub für Linux oder Windows. Führen Sie auf dem Computer, auf dem Sie die AKS-Engine installiert haben, Folgendes aus:
curl -o kubernetes-azurestack.json <URL for the API Model>
Hinweis
Wenn Sie die Verbindungen getrennt haben, können Sie die Datei herunterladen und manuell auf den getrennten Computer kopieren, auf dem Sie sie bearbeiten möchten. Sie können die Datei mithilfe von Tools wie PuTTY oder WinSCP auf Ihren Linux-Computer kopieren.
Wenn Sie das API-Modell in einem Editor öffnen möchten, können Sie nano verwenden:
nano ./kubernetes-azurestack.json
Hinweis
Wenn nano nicht installiert ist, können Sie nano auf Ubuntu installieren:
sudo apt-get install nano
.Suchen Sie in der Datei kubernetes-azurestack.json nach orchestratorRelease und orchestratorVersion. Wählen Sie eine der unterstützten Kubernetes-Versionen aus. Die Versionstabelle finden Sie in den Versionshinweisen. Geben Sie
orchestratorRelease
als x.xx und „orchestratorVersion“ als x.xx.x an. Eine Liste der aktuellen Versionen finden Sie unter Unterstützte AKS-Engine-Versionen.Suchen Sie nach
customCloudProfile
, und geben Sie die URL für das Mandantenportal an. Beispiel:https://portal.local.azurestack.external
.Fügen Sie bei Verwendung von AD FS
"identitySystem":"adfs"
hinzu. Beispiel:"customCloudProfile": { "portalURL": "https://portal.local.azurestack.external", "identitySystem": "adfs" },
Hinweis
Wenn Sie Microsoft Entra ID für Ihr Identitätssystem verwenden, müssen Sie das Feld identitySystem nicht hinzufügen.
Legen Sie in
masterProfile
die folgenden Felder fest:Feld BESCHREIBUNG dnsPrefix Geben Sie eine eindeutige Zeichenfolge ein, die zur Identifizierung des Hostnamens von virtuellen Computern dienen soll. Beispielsweise einen Namen, der auf dem Namen der Ressourcengruppe basiert. count Geben Sie die Anzahl der Masters ein, die für die Bereitstellung vorgesehen sind. Der minimale Wert für eine Hochverfügbarkeitsbereitstellung beträgt 3, aber 1 ist für Bereitstellungen ohne Hochverfügbarkeit zulässig. vmSize Geben Sie eine Größe ein, die von Azure Stack Hub unterstützt wird, z. B. Standard_D2_v2
.distro Geben Sie aks-ubuntu-18.04
oderaks-ubuntu-20.04
ein.Aktualisieren Sie in
agentPoolProfiles
Folgendes:Feld BESCHREIBUNG count Geben Sie die Anzahl der Agents ein, die für die Bereitstellung vorgesehen sind. Pro Abonnement können maximal 50 Knoten verwendet werden. Wenn Sie mehr als einen Cluster pro Abonnement bereitstellen, stellen Sie sicher, dass die Gesamtanzahl der Agents 50 nicht überschreitet. Stellen Sie sicher, dass Sie die Konfigurationselemente aus der JSON-Datei für das API-Beispielmodell verwenden. vmSize Geben Sie eine Größe ein, die von Azure Stack Hub unterstützt wird, z. B. Standard_D2_v2
.distro Geben Sie aks-ubuntu-18.04
,aks-ubuntu-20.04
oderWindows
ein.
Verwenden SieWindows
für Agents, die unter Windows ausgeführt werden. Beispiel: kubernetes-windows.jsonAktualisieren Sie in
linuxProfile
Folgendes:Feld BESCHREIBUNG adminUsername Geben Sie den VM-Administratorbenutzernamen ein. ssh Geben Sie den öffentlichen Schlüssel ein, der für die SSH-Authentifizierung bei virtuellen Computern verwendet wird. Verwenden Sie ssh-rsa
und dann den Schlüssel. Anweisungen zum Erstellen eines öffentlichen Schlüssels finden Sie unter Erstellen eines SSH-Schlüssels für Linux in Azure Stack Hub.Wenn Sie die Bereitstellung in einem benutzerdefinierten virtuellen Netzwerk ausführen möchten, finden Sie Anweisungen zum Ermitteln und Hinzufügen der erforderlichen Schlüssel und Werte zu den entsprechenden Arrays im API-Modell unter Bereitstellen eines Kubernetes-Clusters in einem benutzerdefinierten virtuellen Netzwerk.
Hinweis
Mit der AKS-Engine für Azure Stack Hub können Sie keine eigenen Zertifikate für die Erstellung des Clusters bereitstellen.
Wenn Sie Windows verwenden, aktualisieren Sie in
windowsProfile
die Werte vonadminUsername:
undadminPassword
:"windowsProfile": { "adminUsername": "azureuser", "adminPassword": "", "sshEnabled": true }
Weitere Informationen zum API-Modell
- Eine vollständige Referenz aller verfügbaren Optionen im API-Modell finden Sie in den Clusterdefinitionen.
- Ausführliche Informationen zu bestimmten Optionen für Azure Stack Hub finden Sie in den Einzelheiten zur Azure Stack Hub-Clusterdefinition.
Hinzufügen eines Zertifikats bei Verwendung des ASDK
Wenn Sie einen Cluster im Azure Stack Development Kit (ASDK) bereitstellen und Linux verwenden, müssen Sie das Stammzertifikat dem vertrauenswürdigen Zertifikatspeicher der Client-VM hinzufügen, auf der die AKS-Engine ausgeführt wird.
- Das Stammzertifikat finden Sie auf dem virtuellen Computer in diesem Verzeichnis:
/var/lib/waagent/Certificates.pem.
- Kopieren Sie die Zertifikatdatei:
sudo cp /var/lib/waagent/Certificates.pem /usr/local/share/ca-certificates/azurestacka.crt sudo update-ca-certificates
Bereitstellen eines Kubernetes-Clusters
Nachdem Sie alle erforderlichen Werte in Ihrem API-Modell gesammelt haben, können Sie Ihren Cluster erstellen. Sie sollten jetzt Folgendes tun:
Bitten Sie Ihren Azure Stack Hub-Operator um Folgendes:
- Überprüfen der Integrität des Systems, schlagen Sie die Ausführung von
Test-AzureStack
und des Hardwareüberwachungstools Ihres OEM-Herstellers vor. - Überprüfen der Systemkapazität einschließlich Ressourcen wie Arbeitsspeicher, Speicher und öffentlicher IP-Adressen.
- Geben Sie Details zu dem Kontingent an, das Ihrem Abonnement zugeordnet ist, damit Sie überprüfen können, ob noch genügend Kapazität für die Anzahl der zu verwendenden VMs vorhanden ist.
Fahren Sie mit der Bereitstellung eines Clusters fort:
Überprüfen Sie die verfügbaren Parameter für die AKS-Engine in Azure Stack Hub-CLI-Flags.
Parameter Beispiel BESCHREIBUNG azure-env AzureStackCloud Um der AKS-Engine mitzuteilen, dass die Zielplattform Azure Stack Hub ist, verwenden Sie AzureStackCloud
.identity-system adfs Optional. Geben Sie Ihre Identitätsverwaltungslösung an, wenn Sie Active Directory-Verbunddienste (AD FS) nutzen. location local Der Regionsname für Ihre Azure Stack Hub-Instanz. Für das ASDK ist local
für die Region festgelegt.resource-group kube-rg Geben Sie den Namen einer neuen Ressourcengruppe ein, oder wählen Sie eine vorhandene Ressourcengruppe aus. Der Ressourcenname muss alphanumerisch und in Kleinbuchstaben angegeben sein. api-model ./kubernetes-azurestack.json Pfad zur Clusterkonfigurationsdatei oder zum API-Modell. output-directory kube-rg Geben Sie den Namen des Verzeichnisses ein, das die Ausgabedatei apimodel.json und andere generierte Dateien enthält. client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Geben Sie die Dienstprinzipal-GUID ein. Die als Anwendungs-ID identifizierte Client-ID, wenn Ihr Azure Stack Hub-Administrator den Dienstprinzipal erstellt hat. client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Geben Sie das Dienstprinzipalgeheimnis ein. Sie richten den geheimen Clientschlüssel beim Erstellen Ihres Diensts ein. subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Geben Sie Ihre Abonnement-ID ein. Sie müssen ein Abonnement für den Mandanten bereitstellen. Bereitstellungen für das administrative Abonnement werden nicht unterstützt. Weitere Informationen finden Sie unter Abonnieren von Angeboten. Beispiel:
Hinweis
Für AKSe Version 0.75.3 und höher lautet
aks-engine-azurestack deploy
der Befehl zum Bereitstellen eines AKS-Engine-Clusters.aks-engine deploy \ --azure-env AzureStackCloud \ --location <for asdk is local> \ --resource-group kube-rg \ --api-model ./kubernetes-azurestack.json \ --output-directory kube-rg \ --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --identity-system adfs # required if using AD FS
Wenn bei der Ausführung aus beliebigem Grund ein Fehler auftritt, nachdem das Ausgabeverzeichnis erstellt wurde, können Sie das Problem beheben und den Befehl erneut ausführen. Wenn Sie die Bereitstellung erneut ausführen und zuvor dasselbe Ausgabeverzeichnis verwendet haben, gibt die AKS-Engine einen Fehler zurück, der besagt, dass das Verzeichnis bereits vorhanden ist. Sie können das vorhandene Verzeichnis mit folgendem Flag überschreiben:
--force-overwrite
.Speichern Sie die Clusterkonfiguration der AKS-Engine an einem sicheren, verschlüsselten Speicherort.
Suchen Sie die Datei apimodel.json. Speichern Sie sie an einem sicheren Speicherort. Diese Datei wird in allen anderen AKS-Engine-Vorgängen als Eingabe verwendet.
Die generierte Datei apimodel.json enthält den Dienstprinzipal, das Geheimnis und den öffentlichen SSH-Schlüssel, den Sie im Eingabe-API-Modell verwenden. Die Datei enthält auch alle anderen Metadaten, die von der AKS-Engine benötigt werden, um alle anderen Vorgänge auszuführen. Wenn Sie die Datei verlieren, kann die AKS-Engine den Cluster nicht konfigurieren.
Die Geheimnisse sind unverschlüsselt. Bewahren Sie die Datei an einem verschlüsselten, sicheren Ort auf.
Überprüfen Ihres Clusters
Überprüfen Sie Ihren Cluster, indem Sie eine Verbindung mit kubectl
herstellen, die Informationen abrufen und dann den Status Ihrer Knoten abrufen.
Rufen Sie die Datei
kubeconfig
ab, um eine Verbindung mit dem Steuerungsebenenknoten herzustellen.- Wenn Sie bereits installiert haben
kubectl
, überprüfen Sie diekubeconfig
Datei für den neu erstellten Cluster in diesem Verzeichnispfad/kubeconfig/kubeconfig.json
. Sie können dem Verzeichnis die/kubeconfig.json
.kube
hinzufügen, um auf Ihren neuen Cluster zuzugreifen.
Istkubectl
nicht installiert, besuchen Sie Installieren von Tools, um das Kubernetes-Befehlszeilentool zu installieren. Befolgen Sie andernfalls die folgenden Anweisungen, um über einen der Knoten der Steuerungsebene auf den Cluster zuzugreifen.
- Wenn Sie bereits installiert haben
Rufen Sie die öffentliche IP-Adresse eines Ihrer Steuerungsebenenknoten über das Azure Stack Hub-Portal ab.
Stellen Sie von einem Computer mit Zugriff auf Ihre Azure Stack Hub-instance mithilfe eines Clients wie PuTTY oder MobaXterm eine SSH-Verbindung mit dem neuen Knoten der Steuerungsebene her.
Verwenden Sie für den SSH-Benutzernamen "azureuser" und die Datei mit dem privaten Schlüssel des Schlüsselpaars, das Sie für die Bereitstellung des Clusters angegeben haben.
Überprüfen Sie, ob die Clusterendpunkte ausgeführt werden:
kubectl cluster-info
Die Ausgabe sollte in etwa wie folgt aussehen:
Kubernetes master is running at https://democluster01.location.domain.com CoreDNS is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server is running at https://democluster01.location.domain.com/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Überprüfen Sie dann die Knotenzustände:
kubectl get nodes
Die Ausgabe sollte ähnlich der Folgenden aussehen:
k8s-linuxpool-29969128-0 Ready agent 9d v1.15.5 k8s-linuxpool-29969128-1 Ready agent 9d v1.15.5 k8s-linuxpool-29969128-2 Ready agent 9d v1.15.5 k8s-master-29969128-0 Ready master 9d v1.15.5 k8s-master-29969128-1 Ready master 9d v1.15.5 k8s-master-29969128-2 Ready master 9d v1.15.5
Problembehandlung bei der Clusterbereitstellung
Wenn beim Bereitstellen eines Kubernetes-Clusters mithilfe der AKS-Engine Fehler auftreten, können Sie Folgendes überprüfen:
- Verwenden Sie die korrekten Dienstprinzipal-Anmeldeinformationen (SPN)?
- Hat der SPN die Rolle „Mitwirkende“ für das Azure Stack Hub-Abonnement?
- Verfügen Sie über ein ausreichend großes Kontingent in Ihrem Azure Stack Hub-Plan?
- Wird für die Azure Stack Hub-Instanz ein Patch oder Upgrade angewendet?
Weitere Informationen finden Sie im Artikel Problembehandlung im GitHub-Repository Azure/aks-engine-azurestack .
Drehen Ihres Dienstprinzipalgeheimnisses
Nach der Bereitstellung des Kubernetes-Clusters mit der AKS-Engine wird der Dienstprinzipalname (Service Principal Name, SPN) verwendet, um Interaktionen mit dem Azure Resource Manager auf Ihrer Azure Stack Hub-Instanz zu verwalten. Zu einem bestimmten Zeitpunkt kann das Geheimnis für diesen Dienstprinzipal ablaufen. Wenn Ihr Geheimnis abgelaufen ist, können Sie die Anmeldeinformationen wie folgt aktualisieren:
- Aktualisieren Sie jeden Knoten mit dem neuen Dienstprinzipalgeheimnis.
- Alternativ können Sie die Anmeldeinformationen des API-Modells aktualisieren und das Upgrade ausführen.
Manuelles Aktualisieren jedes Knotens
- Fordern Sie ein neues Geheimnis für Ihren Dienstprinzipal von Ihrem Cloudoperator an. Anweisungen für Azure Stack Hub finden Sie unter Verwenden einer App-Identität für den Zugriff auf Azure Stack Hub-Ressourcen.
- Verwenden Sie die von Ihrem Cloudoperator bereitgestellten neuen Anmeldeinformationen, um /etc/kubernetes/azure.json auf jedem Knoten zu aktualisieren. Starten Sie nach dem Update sowohl als auch
kubele
kube-controller-manager
neu.
Aktualisieren des Clusters mit AKS-Engine-Update
Alternativ können Sie die Anmeldeinformationen in apimodel.json ersetzen und das Upgrade mithilfe der aktualisierten JSON-Datei auf dieselbe oder neuere Kubernetes-Version ausführen. Anweisungen zum Aktualisieren des Modells finden Sie unter Aktualisieren eines Kubernetes-Clusters in Azure Stack Hub.
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für