Tutorial: Durchführen eines Upgrades für Kubernetes in Azure Kubernetes Service (AKS)
Im Rahmen des Anwendungs- und Clusterlebenszyklus möchten Sie möglicherweise ein Upgrade auf die neueste verfügbare Version von Kubernetes durchführen. Sie können ein Upgrade für Ihren AKS-Cluster (Azure Kubernetes Service) mithilfe der Azure CLI, mit Azure PowerShell oder über das Azure-Portal durchführen.
In diesem Tutorial, Teil 7 von 7, erfahren Sie Folgendes:
- Identifizieren der aktuellen und verfügbaren Kubernetes-Versionen
- Durchführen von Upgrades für Ihre Kubernetes-Knoten
- Überprüfen des erfolgreichen Upgrades
Voraussetzungen
In früheren Tutorials wurde eine Anwendung in ein Containerimage verpackt und dieses Containerimage in die Azure Container Registry (ACR) hochgeladen. Außerdem haben Sie einen AKS-Cluster erstellt. Die Anwendung wurde dann für den AKS-Cluster bereitgestellt. Wenn Sie diese Schritte noch nicht ausgeführt haben und ausführen möchten, beginnen Sie mit Tutorial 1: Vorbereiten einer Anwendung für AKS.
- Wenn Sie Azure CLI verwenden, müssen Sie für dieses Tutorial die Azure CLI-Version 2.34.1 oder höher ausführen. Führen Sie
az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI. - Wenn Sie Azure PowerShell verwenden, erfordert dieses Tutorial, dass Sie mindestens die Azure PowerShell-Version 5.9.0 ausführen. Führen Sie
Get-InstalledModule -Name Az
aus, um die Version zu ermitteln. Falls Sie eine Installation oder ein Upgrade ausführen müssen, finden Sie unter Installieren von Azure PowerShell weitere Informationen.
Abrufen verfügbarer Clusterversionen
Verwenden Sie vor dem Upgrade eines Clusters den Befehl az aks get-upgrades, um zu überprüfen, welche Kubernetes-Versionen verfügbar sind.
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
In der folgenden Beispielausgabe lautet die aktuelle Version 1.18.10, und die verfügbaren Versionen werden unter Upgrades angezeigt.
{
"agentPoolProfiles": null,
"controlPlaneProfile": {
"kubernetesVersion": "1.18.10",
...
"upgrades": [
{
"isPreview": null,
"kubernetesVersion": "1.19.1"
},
{
"isPreview": null,
"kubernetesVersion": "1.19.3"
}
]
},
...
}
Durchführen eines Clusterupgrades
AKS-Knoten werden sorgfältig gesperrt und ausgeglichen, um potenzielle Unterbrechungen ausgeführter Anwendungen zu minimieren. Während dieses Vorgangs werden die folgenden Schritte ausgeführt:
- Der Kubernetes-Planer verhindert, dass weitere Pods für einen Knoten geplant werden, für den ein Upgrade durchgeführt werden soll.
- Ausgeführte Pods auf dem Knoten werden auf anderen Knoten im Cluster eingeplant.
- Es wird ein neuer Knoten erstellt, auf dem die aktuellen Kubernetes-Komponenten ausgeführt werden.
- Wenn der neue Knoten bereit ist und in den Cluster eingebunden wurde, beginnt der Kubernetes-Planer damit, Pods auf dem neuen Knoten auszuführen.
- Der alte Knoten wird gelöscht, und der nächste Knoten im Cluster beginnt mit dem Prozess des Absperrens und Ausgleichens.
Hinweis
Wenn kein Patch angegeben wird, wird der Cluster automatisch auf den neuesten GA-Patch der angegebenen Nebenversion upgegradet. Wenn Sie --kubernetes-version
auf 1.21
festlegen, wird der Cluster beispielsweise auf 1.21.9
upgegradet.
Beim Upgrade mithilfe von Alias-Nebenversion wird nur eine höhere Nebenversion unterstützt. Beispiel: Bei einem Upgrade von 1.20.x
auf 1.20
wird kein Upgrade auf den aktuellen GA-Patch 1.20
ausgelöst, beim Upgrade auf 1.21
wird jedoch ein Upgrade auf den aktuellen GA-Patch 1.21
ausgelöst.
Verwenden Sie den Befehl az aks upgrade, um ein Upgrade des AKS-Clusters durchzuführen.
az aks upgrade \
--resource-group myResourceGroup \
--name myAKSCluster \
--kubernetes-version KUBERNETES_VERSION
Hinweis
Upgrades sind jeweils nur auf die nächste Nebenversion möglich. Beispielsweise können Sie ein Upgrade von 1.14.x auf 1.15.x durchführen, aber nicht direkt von 1.14.x auf 1.16.x. Für ein Upgrade von 1.14.x auf 1.16.x müssen Sie zuerst ein Upgrade von 1.14.x auf 1.15.x und dann ein weiteres Upgrade von 1.15.x auf 1.16.x durchführen.
In der folgenden Beispielausgabe wird das Ergebnis des Upgrades auf 1.19.1 gezeigt. Beachten Sie, dass kubernetesVersion jetzt 1.19.1 lautet.
{
"agentPoolProfiles": [
{
"count": 3,
"maxPods": 110,
"name": "nodepool1",
"osType": "Linux",
"storageProfile": "ManagedDisks",
"vmSize": "Standard_DS1_v2",
}
],
"dnsPrefix": "myAKSClust-myResourceGroup-19da35",
"enableRbac": false,
"fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io",
"id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
"kubernetesVersion": "1.19.1",
"location": "eastus",
"name": "myAKSCluster",
"type": "Microsoft.ContainerService/ManagedClusters"
}
Anzeigen der Upgradeereignisse
Beim Upgrade Ihres Clusters können die folgenden Kubernetes-Ereignisse auf den Knoten auftreten:
- Anstieg: Erstellen eines Surge-Knotens.
- Ausgleich: Pods werden aus dem Knoten entfernt. Für jeden Pod gilt ein Timeout von fünf Minuten beim Entfernen.
- Update: Die Aktualisierung eines Knotens war erfolgreich oder nicht erfolgreich.
- Löschen: Löschen eines Surge-Knotens.
Verwenden Sie kubectl get events
, um Ereignisse in den Standardnamespaces während der Ausführung eines Upgrades anzuzeigen.
kubectl get events
Die folgende Beispielausgabe zeigt einige der oben aufgeführten Ereignisse während eines Upgrades.
...
default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001]
...
default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool %!s(MISSING)
...
Überprüfen eines Upgrades
Überprüfen mit dem Befehl az aks show, ob das Upgrade erfolgreich durchgeführt wurde.
az aks show --resource-group myResourceGroup --name myAKSCluster --output table
Die folgende Beispielausgabe zeigt, dass der AKS-Cluster KubernetesVersion 1.19.1 ausführt:
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn
------------ ---------- --------------- ------------------- ------------------------ ------------------- ----------------------------------------------------------------
myAKSCluster eastus myResourceGroup 1.19.1 1.19.1 Succeeded myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
Löschen des Clusters
Da dieses Tutorial der letzte Teil der Reihe ist, ist es ratsam, Ihren AKS-Cluster zu löschen. Die Kubernetes-Knoten werden auf virtuellen Azure-Computern ausgeführt und verursachen auch dann Kosten, wenn Sie den Cluster nicht verwenden.
Führen Sie den Befehl az group delete aus, um die Ressourcengruppe, den Containerdienst und alle dazugehörigen Ressourcen zu entfernen.
az group delete --name myResourceGroup --yes --no-wait
Hinweis
Wenn Sie den Cluster löschen, wird der vom AKS-Cluster verwendete Azure Active Directory-Dienstprinzipal (AAD) nicht entfernt. Schritte zum Entfernen des Dienstprinzipals finden Sie unter den Überlegungen zum AKS-Dienstprinzipal und dessen Löschung. Wenn Sie eine verwaltete Identität verwendet haben, wird die Identität von der Plattform verwaltet, und Sie müssen keine Geheimnisse bereitstellen oder rotieren.
Nächste Schritte
In diesem Tutorial haben Sie Kubernetes in einem AKS-Cluster aktualisiert. Sie haben Folgendes gelernt:
- Identifizieren der aktuellen und verfügbaren Kubernetes-Versionen
- Durchführen von Upgrades für Ihre Kubernetes-Knoten
- Überprüfen des erfolgreichen Upgrades
Weitere Informationen zu AKS finden Sie unter Übersicht über AKS. Einen Leitfaden zum Erstellen von vollständiger Lösungen mit AKS finden Sie unter AKS-Lösungsanleitung.