Kubernetes 安裝筆記 part.1 : 環境準備
Kubernetes Master(Control-plane) / Worker 的 Node 環境準備
OS: | CentOs 7 (kernel = 3.10.1) |
K8s: | v1.24.1 (新安裝時預設使用當下的最新版,因此此版本資訊參考用) |
更新時間:
- 2022/06/11 - use containerd / 不使用 docker
- 2022/04/10 - kubelet kubeadm kubectl 等工具安裝錯誤的解決方案
1 Docker
清除舊安裝
1 2 3 4 5 6 7 8 9 10
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
更新 yum 以安裝 docker
1 2 3 4
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安裝 docker-ce 與依賴套件
1
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
指定版本安裝
列出可用的版本
1
sudo yum list docker-ce --showduplicates | sort -r
安裝指定版本
1
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
啟動 docker 並設定預設啟動
警告在 kubernetes 1.24 版之後,由於被拔除了 docker 支援,所以這邊可以不用啟用了,並請參考 containerd 的設定章節1 2
sudo systemctl start docker sudo systemctl enable docker
Docker 磁碟管理模式確認
確認目前 docker 用的磁碟管理模式
1
docker info
信息正常來說預設安裝後就會使用 overlay2 的磁碟管理模式,若非此模式,可配合下一節的 daemon.json 設定檔來變更設定
Set daemon
新安裝尚未有 daemon.json 檔案時可使用以下語法進行建立
1 2 3 4 5 6 7 8 9 10 11
sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
編輯現有 daemon.json
1
vim /etc/docker/daemon.json
加入 cgroupdriver 設定
可參考官方文件:
信息1
"exec-opts": ["native.cgroupdriver=systemd"],
加入磁碟管理模式的設定
1
"storage-driver": "overlay2"
信息由於現在 Linux OS 新安裝的 docker 都會預設都會使用 overlay2 的磁碟驅動,通常不用特別設定
有時可能也會發生調整為 overlay2 之後就無法啟動 docker 的狀況,所以若有 docker 無法啟動的情況時,可以省略 overlay2 的設定
restart docker
1 2 3
sudo systemctl enable docker sudo systemctl daemon-reload sudo systemctl restart docker
2 containerd 安裝
- Kubernetes 1.24 以後的版本建議使用此套件 (或其他預設支援的 ORI 套件)
- 如果有走前一章節的 docker 安裝的話,可以直接跳到
設定 config
更新 yum 以安裝 docker
1 2 3 4
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安裝 containerd.io
1
sudo yum install containerd.io
設定 config
path: /etc/containerd/config.toml
因為使用 yum 安裝 containerd 時的預設設定檔長這樣 (已忽略註解項目)
|
|
我們需要把 disabled_plugins
裡面的 cri 移除,並加入 systemd 的相關控制,所以設定檔會變成這樣
|
|
- 啟動 (重啟) containerd
|
|
3 Iptables 設定
|
|
4 關閉 Swap
- 使用指令關閉
|
|
永久關閉 swap
註解掉以下命令開啟的檔案中,含有 swap 字樣的行次
1
vim /etc/fstab
用 vim 開啟 /etc/sysctl.conf 檔案,並加入
vm.swappiness=0
此項我在目前有運作的主機上並未進行此設定,但仍可正常運作,但是前述 /etc/fstab 的檔案是確定要修改的
5 安裝 kubernetes 所需 cli 工具
直接參考官方資料
- 以下命令會安裝 kubelet / kubeadm / kubectl 等 cli 工具,並且會調整 selinux 設定
- 此處紀錄的命令已修正 repo_gpgcheck 問題 (請見下面 Troubleshooting 章節)
|
|
預設會安裝以下依賴工具
- conntrack-tools
- cri-tools
- kubernetes-cni
- libnetfilter_cthelper
- libnetfilter_cttimeout
- libnetfilter_queue
- socat
5.1 Troubleshooting
如果在安裝 kubelet 等套件時出現以下訊息
|
|
積極的解決方案 = unknow
消極的解決方案
修改 /etc/yum.repos.d/kubernetes.repo
裡面的 repo_gpgcheck
為 0
|
|