Azure Container Service (AKS) makes it easy to perform common management tasks including upgrading Kubernetes clusters.
Before upgrading a cluster, use the az aks get-upgrades
command to check which Kubernetes releases are available for upgrade.
az aks get-upgrades --name $CLUSTER_NAME --resource-group $NAME --output table
Output:
Name ResourceGroup MasterVersion MasterUpgrades NodePoolVersion NodePoolUpgrades
------- --------------- --------------- ------------------- ------------------ -------------------
default myResourceGroup 1.7.7 1.8.2, 1.7.9, 1.8.1 1.7.7 1.8.2, 1.7.9, 1.8.1
We have three versions available for upgrade: 1.7.9, 1.8.1 and 1.8.2. We can use the az aks upgrade
command to upgrade to the latest available version. During the upgrade process, nodes are carefully [cordoned and drained][kubernetes-drain] to minimize disruption to running applications. Before initiating a cluster upgrade, ensure that you have enough additional compute capacity to handle your workload as cluster nodes are added and removed.
az aks upgrade --name $CLUSTER_NAME --resource-group $NAME --kubernetes-version 1.8.2
Output:
{
"id": "/subscriptions/4f48eeae-9347-40c5-897b-46af1b8811ec/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myK8sCluster",
"location": "eastus",
"name": "myK8sCluster",
"properties": {
"accessProfiles": {
"clusterAdmin": {
"kubeConfig": "..."
},
"clusterUser": {
"kubeConfig": "..."
}
},
"agentPoolProfiles": [
{
"count": 1,
"dnsPrefix": null,
"fqdn": null,
"name": "myK8sCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
],
"dnsPrefix": "myK8sClust-myResourceGroup-4f48ee",
"fqdn": "myk8sclust-myresourcegroup-4f48ee-406cc140.hcp.eastus.azmk8s.io",
"kubernetesVersion": "1.8.2",
"linuxProfile": {
"adminUsername": "azureuser",
"ssh": {
"publicKeys": [
{
"keyData": "..."
}
]
}
},
"provisioningState": "Succeeded",
"servicePrincipalProfile": {
"clientId": "e70c1c1c-0ca4-4e0a-be5e-aea5225af017",
"keyVaultSecretRef": null,
"secret": null
}
},
"resourceGroup": "myResourceGroup",
"tags": null,
"type": "Microsoft.ContainerService/ManagedClusters"
}
You can now confirm the upgrade was successful with the az aks show
command.
az aks show --name $CLUSTER_NAME --resource-group $NAME --output table
Output:
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn
------------ ---------- --------------- ------------------- ------------------- ----------------------------------------------------------------
myK8sCluster eastus myResourceGroup 1.8.2 Succeeded myk8sclust-myresourcegroup-3762d8-2f6ca801.hcp.eastus.azmk8s.io
Content originally created by @gabrtv et al. from this Azure Doc