在每一台 node 上設定

關閉 swap

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

關閉 SELinux

sudo setenforce 0 && sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

安裝 CRI (以 containerd 1.6.19 為例)

https://github.com/containerd/containerd/blob/main/docs/getting-started.md

下載 .tar.gz 檔案

curl -OL https://github.com/containerd/containerd/releases/download/v1.6.19/containerd-1.6.19-linux-amd64.tar.gz

解壓縮

tar Cxzvf /usr/local containerd-1.6.19-linux-amd64.tar.gz

設定 cgroup driver 為 systemd

https://kubernetes.io/docs/setup/production-environment/container-runtimes/

生產 config 檔案

mkdir /etc/containerd && containerd config default > /etc/containerd/config.toml

為了使用 Systemd 作為 cgroup driver, 需要修改 config 檔案 /etc/containerd/config.toml, 將 SystemdCgroup 改為 true

Why kubernetes choose systemd not cgroupfs? https://www.sobyte.net/post/2022-07/k8s-cgroupfs-or-syste/

vi /etc/containerd/config.toml

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    BinaryName = ""
    CriuImagePath = ""
    CriuPath = ""
    CriuWorkPath = ""
    IoGid = 0
    IoUid = 0
    NoNewKeyring = false
    NoPivotRoot = false
    Root = ""
    ShimCgroup = ""
    SystemdCgroup = true

下載 service 檔案

由於 containerd 預設的 config path 是 /etc/containerd/config.toml , 所以不需要改 service 檔案, 可以透過 containerd --help 得知。

開機啟動 containerd

安裝 runc (以 v1.1.4 為例)

下載 runc.amd64

安裝 runc

安裝 CNI Plugin

下載壓縮檔

解壓縮檔案

載入 Kubernetes 所需的 modules

啟動 containerd

安裝ipvsadm

安裝 kubelet kubeadm kubectl

新增 repo 位置

安裝工具並啟動 kubelet

安裝 iproute-tc 是因為使用 kubeadm join node 時會發生 tc not found 問題: link

如果您需要安裝指定版本,以 v1.26.3 為例,可以將 kubelet kubeadm kubectl 改為 kubelet-1.26.3 kubeadm-1.26.3 kubectl-1.26.3

Last updated