Skip to content

Instantly share code, notes, and snippets.

@tuna2134
Forked from inductor/kubeadm-setup-ubuntu.sh
Last active January 14, 2023 02:15
Show Gist options
  • Save tuna2134/9b4deca0ac3e122517cdf1d34766449f to your computer and use it in GitHub Desktop.
Save tuna2134/9b4deca0ac3e122517cdf1d34766449f to your computer and use it in GitHub Desktop.
kubeadm-setup-ubuntu.sh
#/bin/bash -eu
# Install Containerd
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
cat <<EOF | sudo 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
# Apply sysctl params without reboot
sudo sysctl --system
## Install containerd
sudo apt-get update && sudo apt-get install -y containerd
# Configure containerd
sudo mkdir -p /etc/containerd
sudo containerd config default > /etc/containerd/config.toml
if grep -q "SystemdCgroup = true" "/etc/containerd/config.toml"; then
echo "Config found, skip rewriting..."
else
sed -i -e "s/SystemdCgroup \= false/SystemdCgroup \= true/g" /etc/containerd/config.toml
fi
# Restart containerd
sudo systemctl restart containerd
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.overcommit_memory = 1
vm.panic_on_oom = 0
kernel.panic = 10
kernel.panic_on_oops = 1
kernel.keys.root_maxkeys = 1000000
kernel.keys.root_maxbytes = 25000000
EOF
sysctl --system
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
# Create a Kubernetes cluster
kubeadm init --pod-network-cidr=192.168.0.0/16
rm -rf $HOME/.kube
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
helm repo add cilium https://helm.cilium.io/
helm install cilium cilium/cilium \
--namespace kube-system
@tuna2134
Copy link
Author

curl -fsSL https://gist.github.com/tuna2134/9b4deca0ac3e122517cdf1d34766449f/raw/c33479389ff3602e22ec8fc836bdd2c739246792/kubeadm-setup-ubuntu.sh | sh

@tuna2134
Copy link
Author

tuna2134 commented Nov 27, 2022

If your k8s’s pod is pending, you run this command

kubectl taint nodes <node> node-role.kubernetes.io/control-plane:NoSchedule-

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment