Last active
April 24, 2024 00:19
-
-
Save tuna2134/a2e86e288cfa30e73adbf82c114f8a12 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
read -p "Build with master node? (y/n): " MASTER_NODE | |
read -p "What are you using kubernetes version? (example v1.30): " KUBERNETES_VERSION | |
# 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 | |
sudo apt-get update | |
sudo apt-get install -y apt-transport-https ca-certificates curl gpg | |
curl -fsSL https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/Release.key | sudo 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:/$KUBERNETES_VERSION/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list | |
sudo apt-get update | |
sudo apt-get install -y kubelet kubeadm kubectl | |
sudo apt-mark hold kubelet kubeadm kubectl | |
# Set kubeadm config | |
cat > ~/init_kubelet.yaml <<EOF | |
apiVersion: kubeadm.k8s.io/v1beta3 | |
kind: InitConfiguration | |
bootstrapTokens: | |
- token: "$(openssl rand -hex 3).$(openssl rand -hex 8)" | |
description: "kubeadm bootstrap token" | |
ttl: "24h" | |
nodeRegistration: | |
criSocket: "unix:///var/run/containerd/containerd.sock" | |
--- | |
apiVersion: kubeadm.k8s.io/v1beta3 | |
kind: ClusterConfiguration | |
controllerManager: | |
extraArgs: | |
bind-address: "0.0.0.0" # Used by Prometheus Operator | |
scheduler: | |
extraArgs: | |
bind-address: "0.0.0.0" # Used by Prometheus Operator | |
--- | |
apiVersion: kubelet.config.k8s.io/v1beta1 | |
kind: KubeletConfiguration | |
cgroupDriver: "systemd" | |
protectKernelDefaults: true | |
EOF | |
if [ ${MASTER_NODE} = "hello" ]; then | |
kubeadm init --config init_kubelet.yaml | |
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/ | |
sleep 10 | |
helm install cilium cilium/cilium \ | |
--namespace kube-system | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment