diff --git a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md index 09f43dd6341dc..8c747d99f04b5 100644 --- a/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md +++ b/content/en/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade.md @@ -54,11 +54,28 @@ The upgrade workflow at high level is the following: with the purpose of reconfiguring the cluster is not recommended and can have unexpected results. Follow the steps in [Reconfiguring a kubeadm cluster](/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure) instead. +### Considerations when upgrading etcd + +Because the `kube-apiserver` static pod is running at all times (even if you +have drained the node), when you perform a kubeadm upgrade which includes an +etcd upgrade, in-flight requests to the server will stall while the new etcd +static pod is restarting. As a workaround, it is possible to actively stop the +`kube-apiserver` process a few seconds before starting the `kubeadm upgrade +apply` command. This permits to complete in-flight requests and close existing +connections, and minimizes the consequence of the etcd downtime. This can be +done as follows on control plane nodes: + +```shell +killall -s SIGTERM kube-apiserver # trigger a graceful kube-apiserver shutdown +sleep 20 # wait a little bit to permit completing in-flight requests +kubeadm upgrade ... # execute a kubeadm upgrade command +``` + ## Changing the package repository -If you're using the community-owned package repositories (`pkgs.k8s.io`), you need to +If you're using the community-owned package repositories (`pkgs.k8s.io`), you need to enable the package repository for the desired Kubernetes minor release. This is explained in [Changing the Kubernetes package repository](/docs/tasks/administer-cluster/kubeadm/change-package-repository/) document. @@ -320,4 +337,4 @@ and post-upgrade manifest file for a certain component, a backup file for it wil `kubeadm upgrade node` does the following on worker nodes: - Fetches the kubeadm `ClusterConfiguration` from the cluster. -- Upgrades the kubelet configuration for this node. +- Upgrades the kubelet configuration for this node. \ No newline at end of file