Debian 12 bookworm
Sponsored Link

Kubernetes : Add Nodes2023/07/28

 

Add new Nodes to existing Kubernetes Cluster.

This example is based on the environment like follows and add a new Node [snode03.srv.world] to it.

-----------+---------------------------+--------------------------+------------
           |                           |                          |
       eth0|10.0.0.25              eth0|10.0.0.71             eth0|10.0.0.72
+----------+-----------+   +-----------+-----------+   +-----------+-----------+
|  [ ctrl.srv.world ]  |   |  [snode01.srv.world]  |   |  [snode02.srv.world]  |
|     Control Plane    |   |      Worker Node      |   |      Worker Node      |
+----------------------+   +-----------------------+   +-----------------------+

[1]
[2] Confirm join command on Control Plane Node.
root@ctrl:~#
kubeadm token create --print-join-command

kubeadm join 10.0.0.25:6443 --token t1wink.nno4l3kni8q2w5u8 --discovery-token-ca-cert-hash sha256:1b96782423120e014e212197d34c56b029af1a8db85bf40a6602e19881bc7db1
[3] Run join command on a new Node.
root@snode03:~#
kubeadm join 10.0.0.25:6443 --token t1wink.nno4l3kni8q2w5u8 \
--discovery-token-ca-cert-hash sha256:1b96782423120e014e212197d34c56b029af1a8db85bf40a6602e19881bc7db1

[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
[4] Verify settings on Control Plane Node. That's OK if the status of new Node turns to [STATUS = Ready].
root@ctrl:~#
kubectl get nodes

NAME                STATUS   ROLES           AGE     VERSION
ctrl.srv.world      Ready    control-plane   5h44m   v1.26.6
snode01.srv.world   Ready    <none>          51m     v1.26.6
snode02.srv.world   Ready    <none>          50m     v1.26.6
snode03.srv.world   Ready    <none>          76s     v1.26.6

root@ctrl:~#
kubectl get pods -A -o wide | grep snode03

kube-system   calico-node-b9xkk                         1/1     Running   0          107s    10.0.0.73        snode03.srv.world   <none>           <none>
kube-system   kube-proxy-86p6p                          1/1     Running   0          107s    10.0.0.73        snode03.srv.world   <none>           <none>
Matched Content