From 63e92d719ac7da5f5d11affb9a88f34983c287f2 Mon Sep 17 00:00:00 2001 From: "andrew.k" Date: Wed, 7 Jul 2021 23:42:23 +0300 Subject: [PATCH] Clarify first master replace (#7761) * Update nodes.md * fix syntax * fix syntax - part 2 * replace master with kube_control_plane * return etcd-master --- docs/nodes.md | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/docs/nodes.md b/docs/nodes.md index 595e3aff4..56e67bea3 100644 --- a/docs/nodes.md +++ b/docs/nodes.md @@ -69,8 +69,8 @@ Before using `--limit` run playbook `facts.yml` without the limit to refresh fac ### 3) Remove an old node with remove-node.yml With the old node still in the inventory, run `remove-node.yml`. You need to pass `-e node=NODE_NAME` to the playbook to limit the execution to the node being removed. - -If the node you want to remove is not online, you should add `reset_nodes=false` to your extra-vars: `-e node=NODE_NAME -e reset_nodes=false`. + +If the node you want to remove is not online, you should add `reset_nodes=false` and `allow_ungraceful_removal=true` to your extra-vars: `-e node=NODE_NAME -e reset_nodes=false -e allow_ungraceful_removal=true`. Use this flag even when you remove other types of nodes like a control plane or etcd nodes. ### 4) Remove the node from the inventory @@ -95,7 +95,46 @@ docker ps | grep k8s_nginx-proxy_nginx-proxy | awk '{print $1}' | xargs docker r ### 3) Remove old control plane nodes With the old node still in the inventory, run `remove-node.yml`. You need to pass `-e node=NODE_NAME` to the playbook to limit the execution to the node being removed. -If the node you want to remove is not online, you should add `reset_nodes=false` to your extra-vars. +If the node you want to remove is not online, you should add `reset_nodes=false` and `allow_ungraceful_removal=true` to your extra-vars. + +## Replacing a first control plane node + +### 1) Change control plane nodes order in inventory + +from + +```ini +[kube_control_plane] + node-1 + node-2 + node-3 +``` + +to + +```ini +[kube_control_plane] + node-2 + node-3 + node-1 +``` + +### 2) Remove old first control plane node from cluster + +With the old node still in the inventory, run `remove-node.yml`. You need to pass `-e node=node-1` to the playbook to limit the execution to the node being removed. +If the node you want to remove is not online, you should add `reset_nodes=false` and `allow_ungraceful_removal=true` to your extra-vars. + +### 3) Edit cluster-info configmap in kube-system namespace + +`kubectl edit cm -n kube-public cluster-info` + +Change ip of old kube_control_plane node with ip of live kube_control_plane node (`server` field). Also, update `certificate-authority-data` field if you changed certs. + +### 4) Add new control plane node + +Update inventory (if needed) + +Run `cluster.yml` with `--limit=kube_control_plane` ## Adding an etcd node @@ -124,7 +163,7 @@ In every control plane node, edit `/etc/kubernetes/manifests/kube-apiserver.yaml ### 1) Remove an old etcd node With the node still in the inventory, run `remove-node.yml` passing `-e node=NODE_NAME` as the name of the node that should be removed. -If the node you want to remove is not online, you should add `reset_nodes=false` to your extra-vars. +If the node you want to remove is not online, you should add `reset_nodes=false` and `allow_ungraceful_removal=true` to your extra-vars. ### 2) Make sure only remaining nodes are in your inventory