Skip to content

Instantly share code, notes, and snippets.

@devpilot
Last active May 3, 2024 06:44
Show Gist options
  • Save devpilot/6d0eb3eb5bc24bd19016ee62f7ba989d to your computer and use it in GitHub Desktop.
Save devpilot/6d0eb3eb5bc24bd19016ee62f7ba989d to your computer and use it in GitHub Desktop.
setup kubernetes single node cluster
#!/bin/sh
# curl -o- https://gist.githubusercontent.com/devpilot/6d0eb3eb5bc24bd19016ee62f7ba989d/raw/kube-setup.sh | sudo bash
#
# Make script executable
# chmod +x kube-setup.sh
#
# Run sctipt as root
# sudo ./kube-setup.sh
set -xe
# script should run as root user
if [ `id -u` -ne 0 ]
then echo Please run this script as root or using sudo!
exit
fi
cat << EOF | tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat << EOF | tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
apt update
apt install -y containerd
mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
systemctl restart containerd
apt install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt install -y kubeadm=1.30.0-1.1 kubelet=1.30.0-1.1 kubectl=1.30.0-1.1
apt-mark hold kubeadm kubelet kubectl
kubeadm init --pod-network-cidr 10.20.0.0/16 --kubernetes-version 1.30.0
export KUBECONFIG=/etc/kubernetes/admin.conf
# https://projectcalico.docs.tigera.io/getting-started/kubernetes/quickstart
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/custom-resources.yaml
sed -i "s/cidr:.*/cidr: 10.20.0.0\/16/" custom-resources.yaml
kubectl create -f custom-resources.yaml
rm custom-resources.yaml
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
mkdir -p /home/core/.kube
cp -i /etc/kubernetes/admin.conf /home/core/.kube/config
chown -R core:core /home/core/.kube
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment