Skip to content

... add a new node to Kubernetes cluster

Jonas Umland edited this page Nov 13, 2020 · 1 revision

Here we document the steps that were necessary to add the galileo server to the existing cluster.

Generate Token on Master Node

kubeadm token create --print-join-command

This will output a command that looks like kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash> save it for later. source source2

Setup the new worker node

Install required kubernetes packages

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet=1.17.2-00 kubeadm=1.17.2-00 kubectl=1.17.2-00
sudo apt-mark hold kubelet kubeadm kubectl

Version 1.17.2-00 is the same as running on the master node. source

Install Docker

Disable Swap & Change Docker CgroupDriver

swapoff -a In /etc/fstab comment out the reference to Swap

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF

mkdir -p /etc/systemd/system/docker.service.d

# Restart Docker
systemctl daemon-reload
systemctl restart docker

source

Connect to Cluster

Run the command you copied from the master node earlier

kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

Adapt eviction policy

Add the following to /var/lib/kubelet/config.yaml

evictionHard:
  imagefs.available: 1%
  memory.available: 100Mi
  nodefs.available: 1%
  nodefs.inodesFree: 1%

source