Schnellstart: Bereitstellen eines Clusters für den Azure Linux-Containerhost für AKS mithilfe einer ARM-Vorlage
Führen Sie erste Schritte mit dem Azure Linux-Containerhost mithilfe einer ARM-Vorlage (Azure Resource Manager) aus, um einen Azure Linux-Containerhostcluster bereitzustellen. Nach der Installation der erforderlichen Komponenten erstellen Sie ein SSH-Schlüsselpaar, überprüfen die Vorlage, stellen die Vorlage bereit und validieren sie und stellen dann eine Anwendung bereit.
Eine Azure Resource Manager-Vorlage ist eine JSON (JavaScript Object Notation)-Datei, welche die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zu schreiben, mit denen die Bereitstellung erstellt wird.
Voraussetzungen
-
Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Azure Cloud Shell-Schnellstart: Bash.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Falls kubectl nicht bereits installiert ist, installieren Sie das Tool mithilfe von
az aks install-cli
über die Azure CLI, oder befolgen Sie die Upstream-Anweisungen.Um einen AKS-Cluster mithilfe einer Resource Manager-Vorlage zu erstellen, geben Sie einen öffentlichen SSH-Schlüssel an. Wenn Sie diese Ressource benötigen, finden Sie im folgenden Abschnitt Informationen, andernfalls fahren Sie mit dem Abschnitt Überprüfen der Vorlage fort.
Die Identität, die Sie zum Erstellen Ihres Clusters verwenden, verfügt über die erforderlichen Mindestberechtigungen. Weitere Informationen zu Zugriff und Identität für AKS finden Sie unter Zugriffs- und Identitätsoptionen für Azure Kubernetes Service (AKS).
Zum Bereitstellen einer Bicep-Datei oder ARM-Vorlage benötigen Sie Schreibzugriff auf die Ressourcen, die Sie bereitstellen, und Zugriff auf alle Vorgänge für den Ressourcentyp Microsoft.Resources/deployments. Um beispielsweise eine virtuelle Maschine bereitzustellen, benötigen Sie die Berechtigungen Microsoft.Compute/virtualMachines/write und Microsoft.Resources/deployments/*. Eine Liste der Rollen und Berechtigungen finden Sie unter Integrierte Azure-Rollen.
Erstellen eines SSH-Schlüsselpaars
Für den Zugriff auf AKS-Knoten stellen Sie eine Verbindung mithilfe eines SSH-Schlüsselpaars (öffentlich und privat) her, das Sie mithilfe des Befehls ssh-keygen
generieren. Diese Dateien werden standardmäßig im Verzeichnis ~/.ssh erstellt. Durch die Ausführung des Befehls ssh-keygen
wird jedes SSH-Schlüsselpaar mit dem gleichen Namen überschrieben, das bereits am angegebenen Speicherort vorhanden ist.
Navigieren Sie zu https://shell.azure.com, um Cloud Shell in Ihrem Browser zu öffnen.
Führen Sie den Befehl
ssh-keygen
aus. Das folgende Beispiel erstellt ein SSH-Schlüsselpaar mittels RSA-Verschlüsselung und einer Bitlänge von 4096:ssh-keygen -t rsa -b 4096
Weitere Informationen zum Erstellen von SSH-Schlüsseln finden Sie unter Erstellen und Verwalten von SSH-Schlüsseln für die Authentifizierung in Azure.
Überprüfen der Vorlage
Die folgende Bereitstellung verwendet eine ARM-Vorlage aus den Azure-Schnellstartvorlagen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "azurelinuxakscluster",
"metadata": {
"description": "The name of the Managed Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the Managed Cluster resource."
}
},
"dnsPrefix": {
"type": "string",
"metadata": {
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
}
},
"osDiskSizeGB": {
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1023,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
}
},
"agentCount": {
"type": "int",
"defaultValue": 3,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_DS2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"linuxAdminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Linux Virtual Machines."
}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
}
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"osSKU": {
"type": "string",
"defaultValue": "AzureLinux",
"allowedValues": [
"AzureLinux",
"Ubuntu"
],
"metadata": {
"description": "The Linux SKU to use."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2021-03-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"mode": "System",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "[parameters('osType')]",
"osSKU": "[parameters('osSKU')]",
"storageProfile": "ManagedDisks"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
},
"identity": {
"type": "SystemAssigned"
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(parameters('clusterName')).fqdn]"
}
}
}
Um Azure Linux zu einer vorhandenen ARM-Vorlage hinzuzufügen, müssen Sie "osSKU": "AzureLinux"
und "mode": "System"
zu agentPoolProfiles
hinzufügen und die API-Version (apiVersion) auf 2021-03-01 oder neuer ("apiVersion": "2021-03-01"
) festlegen.
Bereitstellen der Vorlage
Wählen Sie die folgende Schaltfläche, um sich bei Azure anzumelden und eine Vorlage zu öffnen:
Wählen Sie die folgenden Werte aus, bzw. geben Sie sie ein.
Im Rahmen dieser Schnellstartanleitung behalten Sie die Standardwerte für Betriebssystem-Datenträgergröße (GB) , Agent-Anzahl, Größe der Agent-VM, Betriebssystemtyp, und Kubernetes-Version bei. Geben Sie Ihre eigenen Werte für die folgenden Vorlagenparameter an:
- Abonnement: Wählen Sie ein Azure-Abonnement aus.
- Ressourcengruppe: Wählen Sie Neu erstellen. Geben Sie einen eindeutigen Namen für die Ressourcengruppe an, z. B. testAzureLinuxResourceGroup, und wählen Sie dann OK aus.
- Standort: Wählen Sie einen Ort aus, z. B. USA, Osten.
- Clustername: Geben Sie einen eindeutigen Namen für den AKS-Cluster ein, z. B. testAzureLinuxCluster.
- DNS-Präfix: Geben Sie ein eindeutiges DNS-Präfix für Ihren Cluster ein, z. B. myAzureLinuxCluster.
- Benutzername des Linux-Administrators: Geben Sie einen Benutzernamen ein, um mithilfe von SSH eine Verbindung herzustellen, z. B. azureUser.
- Öffentlicher SSH RSA-Schlüssel: Kopieren Sie den öffentlichen Teil Ihres SSH-Schlüsselpaar, und fügen Sie ihn ein (standardmäßig der Inhalt von ~/.ssh/id_rsa.pub).
Klicken Sie auf Überprüfen + erstellen.
Die Erstellung des Azure Linux-Containerhostclusters dauert einige Minuten. Warten Sie, bis der Cluster erfolgreich bereitgestellt wurde, bevor Sie mit dem nächsten Schritt fortfahren.
Überprüfen der Bereitstellung
Herstellen einer Verbindung mit dem Cluster
Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl.
Verwenden Sie für die lokale Installation von
kubectl
den Befehlaz aks install-cli
:az aks install-cli
Mit dem Befehl
az aks get-credentials
können Siekubectl
für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen und die Kubernetes-CLI für ihre Verwendung konfiguriert.az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
Überprüfen Sie die Verbindung mit dem Cluster mithilfe des Befehls
kubectl get
. Dieser Befehl gibt eine Liste der Clusterknoten zurück.kubectl get nodes
Das folgende Ausgabebeispiel zeigt den in den vorherigen Schritten erstellten Knoten. Stellen Sie sicher, dass der Knotenstatus Bereit lautet:
NAME STATUS ROLES AGE VERSION aks-agentpool-41324942-0 Ready agent 6m44s v1.12.6 aks-agentpool-41324942-1 Ready agent 6m46s v1.12.6 aks-agentpool-41324942-2 Ready agent 6m45s v1.12.6
Bereitstellen der Anwendung
Eine Kubernetes-Manifestdatei definiert den gewünschten Zustand (Desired State) eines Clusters – also beispielsweise, welche Containerimages ausgeführt werden sollen.
In dieser Schnellstartanleitung verwenden Sie ein Manifest, um alle Objekte zu erstellen, die zum Ausführen der Azure Vote-Anwendung benötigt werden. Dieses Manifest umfasst zwei Kubernetes-Bereitstellungen:
- Die Azure Vote-Python-Beispielanwendungen
- Eine Redis-Instanz
Darüber hinaus werden zwei Kubernetes-Dienste 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 mit dem Namen
azure-vote.yaml
.- Bei Verwendung von Azure Cloud Shell kann diese Datei mit
code
,vi
odernano
erstellt werden – genau wie bei der Verwendung eines virtuellen oder physischen Systems.
- Bei Verwendung von Azure Cloud Shell kann diese Datei mit
Fügen Sie die folgende YAML-Definition ein:
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: mcr.microsoft.com/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: mcr.microsoft.com/azuredocs/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
Eine Aufschlüsselung der YAML-Manifestdateien finden Sie unter Bereitstellungen und YAML-Manifeste.
Stellen Sie die Anwendung über den Befehl kubectl apply bereit, und geben Sie den Namen Ihres YAML-Manifests an:
kubectl apply -f azure-vote.yaml
Das folgende Beispiel ähnelt der Ausgabe, die die erfolgreich erstellten Bereitstellungen und Dienste anzeigt:
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.
Verwenden Sie zum Überwachen des Fortschritts den Befehl kubectl get service mit dem Argument --watch
:
kubectl get service azure-vote-front --watch
Die Ausgabe von EXTERNAL-IP für den azure-vote-front
-Dienst lautet zu Beginn pending:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Nachdem die externe IP-Adresse (EXTERNAL-IP) von ausstehend in eine tatsächliche öffentliche IP-Adresse geändert wurde, verwenden Sie CTRL-C
, um die kubectl
-Überwachung 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
Wenn Sie nicht mit den folgenden Tutorials fortfahren möchten, bereinigen Sie nicht benötigte Ressourcen, um Azure-Gebühren zu vermeiden. Verwenden Sie den Befehl az group delete
, um die Ressourcengruppe und alle zugeordneten Ressourcen zu entfernen.
az group delete --name testAzureLinuxCluster --yes --no-wait
Nächste Schritte
In dieser Schnellstartanleitung haben Sie einen Azure Linux-Containerhostcluster bereitgestellt. Weitere Informationen zum Azure Linux-Containerhost und ein vollständiges Beispiel für die Clusterbereitstellung und -verwaltung finden Sie im Tutorial zum Azure Linux-Containerhost.