Kubernetes 1.24 版本環境設定重點
由於 kubernetes 在 1.24 版之後已不預設支援 Docker ( kubernetes 1.24 release page ),所以照原本的安裝方式的話,在建立叢集時會出現錯誤。
但是因為原本的作法在安裝 Docker 時已經有安裝其他 kubernetes 有支援的容器套件 containerd,所以這篇主要紀錄如何去設定 containerd 來作為 Docker 的替代品,並紀錄一些跟原先的安裝參數不一樣的地方。
相關內容已更新至 Kubernetes 安裝筆記 part.1 : 環境準備~
OS: | CentOs 7 (kernel = 3.10.1) |
K8s: | v1.24.1 (新安裝時預設使用當下的最新版,因此此版本資訊參考用) |
1 iptable 橋接設定變化
來到 1.24 之後,第一個不一樣的環境設定舊識 iptable 的設定參數,原本舊版是
|
|
現在新版要改成這樣
|
|
2 containerd
在原本的環境準備方式中,可以發現安裝 docker 的時候其實有另外裝一個叫做 containerd.io 的東西,其實這是核心的容器執行元件,詳細技術細節我這邊就不說了,小弟我才疏學淺,直接看技術文件一定比我這篇筆記來的詳細。
而 1.24 版本的 kubernetes 雖然拔掉了 docker 原生支援,但是其實 kubernetes 也可以直接使用 containerd 來操作容器的 (原本的操安裝方式比較像是藉由 docker 去操作 containerd)。所以,我們現在在已經有安裝相關套件的狀況下,只要找到方式讓 kubernetes 改用 containerd 來運作就行了~
所以,接下來我們就是要開始設定 containerd 的相關參數 (可參考官方文件)
2.1 變更 config
path: /etc/containerd/config.toml
因為使用 yum 安裝 containerd 時的預設設定檔長這樣 (已忽略註解項目)
|
|
我們需要把 disabled_plugins
裡面的 cri 移除,並加入 systemd 的相關控制,所以設定檔會變成這樣
|
|
這個設定檔建議使用以下命令用 containerd 內部的預設設定檔覆蓋後再去調整 SystemdCgroup=true
因為我一開始使用上面的設定的時候有發生 CoreDNS 起不來的問題,之後就好了,也許可以評估一下要不要換用預設設定檔去改。
|
|
然後啟動 (重啟) containerd
|
|
2.2 crictl 設定調整
這個設定檔一開始不存在,需要自己建立並寫入以下內容
|
|
yaml 內容如下
|
|
3 Single Node Setting
Kubernetes 1.24 之後的 single node 設定也有調整
舊的命令只要這樣下就可以了
|
|
新的要這樣下
|
|
4 待測試、解決問題
- 同時執行 docker & containerd (如果還想要使用 docker 的話,我不確定是否可以並行,理論上是可以,因為 docker 也是使用 containerd 來處理容器的)
5 參考資料
- 完整的 kubernetes 1.24 安裝方式 - 中文 此網頁
我有參考這邊來確認自己的安裝方式有缺什麼東西
有些設定跟我不一樣,而且這篇使用的 OS 是 CentOs 8,我是用 7 另外,由於我改使用 containerd 來做為 kubernetes 的容器執行工具,所以這篇使用 docker 的作法也僅作為參考