Skip to content

Instantly share code, notes, and snippets.

@fabiogomezdiaz
Last active September 13, 2023 13:53
Show Gist options
  • Save fabiogomezdiaz/7fcb2732f7f2a01997edbdffee6225a3 to your computer and use it in GitHub Desktop.
Save fabiogomezdiaz/7fcb2732f7f2a01997edbdffee6225a3 to your computer and use it in GitHub Desktop.
Create Weave-Net-Enabled Kubernetes Cluster with kubeadm
#!/bin/bash
set -x
# 1. Become sudo
sudo su
# 2. Install Docker
apt-get update
apt-get install -y docker.io
# 3. Enable Docker Service
systemctl enable docker.service
# 4. Disable Swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 5. Install kubelet, kubeadm, and kubectl
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
# 6. MASTER ONLY: Configure cgroup driver used by kubelet on Master Node
docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload
systemctl restart kubelet
# 7. MASTER ONLY: Run kubeadm init
# Make sure to copy the 'kubeadm join' from the command output
# It will be needed for worker nodes to join the cluster
kubeadm init
exit
# 8. MASTER ONLY: Let non-root users use kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 9. MASTER ONLY: Install Weave Net
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
# 10. MASTER ONLY: Taint master node so you can run pods in it
kubectl taint nodes --all node-role.kubernetes.io/master-
# 11. Setup SSH on root so you can scp certificate
sudo su
apt install -y ssh
passwd
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
service ssh restart
exit
set +x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment