事前準備
準備三台 node,安裝建議高於 2 cor CPU 與 4GB 的 RAM。
Kubernetes Interface
- CRI 使用的是 containerd
- CNI 使用的是 calico
步驟
每一台都要
將指定的 IP 地址和主機名添加到 /etc/hosts
文件中,以便系統可以解析這些主機名。
1
| printf "\n192.168.50.73 thanos-test-1\n192.168.50.74 thanos-test-2\n192.168.50.75 thanos-test-3\n\n" >> /etc/hosts
|
為 containerd 添加必要的模組
1
| printf "overlay\nbr_netfilter\n" >> /etc/modules-load.d/containerd.conf
|
啟用 overlay 和 br_netfilter 模組
1 2
| modprobe overlay modprobe br_netfilter
|
設置系統參數以支持 Kubernetes。
1
| printf "net.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\n" >> /etc/sysctl.d/99-kubernetes-cri.conf
|
從 GitHub 下載 containerd 的壓縮包並解壓到指定目錄
1 2 3 4
| wget https://github.com/containerd/containerd/releases/download/v1.6.16/containerd-1.6.16-linux-amd64.tar.gz -P /tmp/ tar Cxzvf /usr/local /tmp/containerd-1.6.16-linux-amd64.tar.gz
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -P /etc/systemd/system/
|
重新加載 systemd 的並啟動 containerd 服務
1 2
| systemctl daemon-reload systemctl enable --now containerd
|
從 GitHub 下載 runc 並安裝到指定目錄
1 2 3
| wget https://github.com/opencontainers/runc/releases/download/v1.1.4/runc.amd64 -P /tmp/
install -m 755 /tmp/runc.amd64 /usr/local/sbin/runc
|
從 GitHub 下載 CNI 插件的壓縮包並解壓到指定目錄
1 2 3
| wget https://github.com/containernetworking/plugins/releases/download/v1.2.0/cni-plugins-linux-amd64-v1.2.0.tgz -P /tmp/ mkdir -p /opt/cni/bin tar Cxzvf /opt/cni/bin /tmp/cni-plugins-linux-amd64-v1.2.0.tgz
|
創建 containerd 的配置文件
- 手動編輯並將 systemdCgroup 設置為 true
1 2 3 4 5
| mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
systemctl restart containerd
|
關閉 swap 交換分區
更新系統套件列表
1 2
| apt-get update apt-get install -y apt-transport-https ca-certificates curl
|
添加 Kubernetes 的 APT 來源
1 2 3
| sudo mkdir -p /etc/apt/keyrings echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg
|
更新系統套件列表並重啟系統
安裝指定版本的 Kubernetes 套件
1 2
| apt-get install -y kubelet=1.26.1-00 kubeadm=1.26.1-00 kubectl=1.26.1-00 apt-mark hold kubelet kubeadm kubectl
|
檢查 swap 配置,確保 swap 已被禁用(顯示為 0)。
只有 controll panel 需要初始化 Kubernetes 叢集。
1
| kubeadm init --pod-network-cidr 10.10.0.0/16 --kubernetes-version 1.26.1 --node-name k8s-control
|
在 controll panel 節點上安裝 Calico
1 2 3
| kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml
|
手動編輯 custom-resources.yaml 文件並設置正確的 CIDR。
- 修改成 10.10.0.0/16
1 2 3
| vi custom-resources.yaml
kubectl apply -f custom-resources.yaml
|
取得 worker node 加入 cluster 的命令。
1
| kubeadm token create --print-join-command
|
新增到 worker node 執行,使用上面的命令將 worker node 加入 cluster。