Última atividade 1706077627

Install K8S on your home lab!

Revisão 6f633b94c865f7708edd69db5f5f1612dbff7ad0

Install.sh Bruto
1#/bin/bash
2# This script is to install Kubernetes on Ubuntu 22.04 LTS, with Calico as CNI
3# This script used 10.244.0.0/16 as pod network CIDR. This network should not be used in your physical network.
4# This script used Calico v3.27.0. You can change it to the latest version.
5
6DEBIAN_FRONTEND=noninteractive sudo apt update
7DEBIAN_FRONTEND=noninteractive sudo apt install curl gnupg2 software-properties-common apt-transport-https ca-certificates -y
8
9echo "Disable swap..."
10sudo swapoff -a
11sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
12
13echo "Uninstall Docker.ce..."
14aiur() { arg="$( cut -d ' ' -f 2- <<< "$@" )" && curl -sL https://gitlab.aiursoft.cn/aiursoft/aiurscript/-/raw/master/$1.sh | sudo bash -s $arg; }
15aiur uninstall/docker
16sudo apt autoremove -y
17
18echo "Install Docker.io..."
19DEBIAN_FRONTEND=noninteractive sudo apt install docker.io -y
20
21echo "Prepare network..."
22cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
23overlay
24br_netfilter
25EOF
26sudo modprobe overlay
27sudo modprobe br_netfilter
28# sysctl params required by setup, params persist across reboots
29cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
30net.bridge.bridge-nf-call-iptables = 1
31net.bridge.bridge-nf-call-ip6tables = 1
32net.ipv4.ip_forward = 1
33EOF
34sudo sysctl --system
35
36echo "Prepare runtime to setup containerd..."
37sudo mkdir /etc/containerd > /dev/null 2>&1
38sudo sh -c "containerd config default > /etc/containerd/config.toml"
39sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
40sudo systemctl restart containerd.service
41sudo systemctl restart kubelet.service > /dev/null 2>&1
42
43echo "Install K8S..."
44curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg --yes
45echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/kubernetes.gpg] http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list
46sudo apt update
47DEBIAN_FRONTEND=noninteractive sudo apt install kubeadm kubelet kubectl kubernetes-cni -y
48
49# Init (Only on Master)
50echo "Init K8S..."
51sudo kubeadm config images pull
52sudo kubeadm init --pod-network-cidr=10.244.0.0/16
53read -p "Please copy the kubeadm join command above and run it on worker nodes. Press any key to continue..."
54
55# Config (Only on Master)
56echo "Config K8S..."
57mkdir -p $HOME/.kube
58sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
59sudo chown $(id -u):$(id -g) $HOME/.kube/config
60
61# Calico (Only on Master)
62echo "Install Calico..."
63kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/tigera-operator.yaml
64curl https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml -O
65sed -i 's/cidr: 192\.168\.0\.0\/16/cidr: 10\.244\.0\.0\/16/' custom-resources.yaml
66kubectl create -f custom-resources.yaml
67sudo systemctl restart kubelet.service
68
69# Test (Only on Master)
70echo "Test K8S..."
71kubectl get nodes -o wide
72kubectl get pods --all-namespaces