這一篇主要是以「乾貨」為主,目的是讓需要的人能僅靠複製貼上就能達到最終目的,完成K8S的完整安裝。
過一些時間會另外再寫一篇以「詳解」為主的安裝指南,撰寫詳解筆記費時費力,故只能敬請期待。當然待「詳解」篇完成後,會再編寫一份「一鍵安裝」的自動化腳本,但這都是非常後話了。先秀最終結果
Kubernetes Control-Plane Node 和 Kubernetes Worker Node 都需要安裝
sudo apt update
sudo apt upgrade
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab
free -l
# 這邊我是用GCP Demo,因此沒有「sudo sed -i '/swap/s/^/#/' /etc/fstab」這個需求,故無下該指令。
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 modprobe overlay
sudo modprobe br_netfilter
sudo sysctl --system
sudo apt install ca-certificates curl
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install containerd.io
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
vi /etc/containerd/config.toml
#disabled_plugins = []
sudo systemctl restart containerd
sudo systemctl status containerd
sudo systemctl enable containerd
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/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:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
ip addr
kubeadm join 10.140.0.15:6443 --token wolaoa.u36t8fpwg0jab5vu \
--discovery-token-ca-cert-hash sha256:34135b2b2fc1bfcd1d601dcc565ea54128b67840f506ade64875b6c3c071c48b
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubeadm join 10.140.0.15:6443 --token wolaoa.u36t8fpwg0jab5vu \
--discovery-token-ca-cert-hash sha256:34135b2b2fc1bfcd1d601dcc565ea54128b67840f506ade64875b6c3c071c48b
echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile
kubectl get nodes