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