如何用 Kubeadm 在 Debian 11 上安裝 Kubernetes 集群
這份分步指南將向你展示如何使用 Kubeadm 工具在 Debian 11 上安裝 Kubernetes 集群。
Kubernetes(k8s)集群包含主控節(jié)點(diǎn)和工作節(jié)點(diǎn),用于運(yùn)行容器化的應(yīng)用程序。主控節(jié)點(diǎn)作為控制平面,工作節(jié)點(diǎn)為實(shí)際工作負(fù)載提供環(huán)境。
前置條件:
- 已安裝 Debian 11
- 2 CPU / vCPU
- 2 GB RAM
- 20 GB 空閑硬盤空間
- 有管理員權(quán)限的 sudo 用戶
- 穩(wěn)定的網(wǎng)絡(luò)連接
實(shí)驗(yàn)環(huán)境配置:
在本文中,我使用了 3 個(gè) Debian 11 系統(tǒng)的節(jié)點(diǎn),配置如下
- 主控節(jié)點(diǎn)(?
?k8s-master?
?) – 192.168.1.236 - 工作節(jié)點(diǎn) 1(?
?k8s-worker1?
?) – 192.168.1.237 - 工作節(jié)點(diǎn) 2(?
?k8s-worker2?
?) – 192.168.1.238
事不宜遲,我們直接進(jìn)入安裝步驟。
1、設(shè)置主機(jī)名和更新 /etc/hosts 文件
在主控節(jié)點(diǎn)和工作節(jié)點(diǎn)上使用 ??hostnamectl?
? 命令來(lái)設(shè)置主機(jī)名:
在所有節(jié)點(diǎn)的 ??/etc/hosts?
? 文件末尾添加下面幾行內(nèi)容:
2、在所有節(jié)點(diǎn)上關(guān)閉交換分區(qū)
我推薦關(guān)閉交換分區(qū),以便更絲滑地使用 ??kubelet?
?。在所有節(jié)點(diǎn)上執(zhí)行以下命令來(lái)關(guān)閉交換分區(qū):
3、配置 Kubernetes 集群相關(guān)的防火墻規(guī)則
如果你的操作系統(tǒng)防火墻是打開(kāi)的,請(qǐng)分別在主控節(jié)點(diǎn)和工作節(jié)點(diǎn)允許以下的端口。
在主控節(jié)點(diǎn),執(zhí)行:
在工作節(jié)點(diǎn),執(zhí)行:
注意:如果你的 Debian 11 系統(tǒng)防火墻是關(guān)閉的,可以跳過(guò)此步驟。
4、在所有節(jié)點(diǎn)安裝 Containerd 運(yùn)行時(shí)
Containerd 是容器運(yùn)行時(shí)的行業(yè)標(biāo)準(zhǔn),所有節(jié)點(diǎn)必須安裝 Containerd。
先在所有節(jié)點(diǎn)上配置如下的核心參數(shù),再安裝 Containerd。
運(yùn)行如下命令,以使上面的更改生效:
現(xiàn)在,在所有節(jié)點(diǎn)上運(yùn)行如下 ??apt?
? 命令來(lái)安裝 Conatinerd。
在所有節(jié)點(diǎn)上運(yùn)行如下命令來(lái)配置 Containerd:
在所有節(jié)點(diǎn)上設(shè)置 ??cgroupdriver?
? 為 ??systemd?
?,編輯 ??/etc/containerd/config.toml?
? 文件,找到 ??[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]?
? 部分,添加一行內(nèi)容:??SystemdCgroup = true?
?:
systemdCgroup-true-containerd-config-toml
保存并退出文件。
在所有節(jié)點(diǎn)上重啟并啟用 ??containerd?
? 服務(wù):
5、添加 Kubernetes Apt 庫(kù)
執(zhí)行以下命令,添加 Kubernetes Apt 庫(kù):
6、在所有節(jié)點(diǎn)上安裝 kubelet、kubectl 和 kubeadm
在所有節(jié)點(diǎn)上執(zhí)行以下 ??apt?
? 命令,安裝 Kubernetes 集群組件,如 ??kubelet?
?、??kubectl?
? 以及 ??kubeadm?
?。
7、使用 Kubeadm 創(chuàng)建 Kubernetes 集群
現(xiàn)在我們可以創(chuàng)建 Kubernetes 集群了,在主控節(jié)點(diǎn)上執(zhí)行以下命令:
命令輸出:
Kubernetes-Control-Plane-Initialization-Debian11
出現(xiàn)以上內(nèi)容,說(shuō)明控制平面初始化成功。在輸出中,有普通用戶與集群交互的命令,也有把任何工作節(jié)點(diǎn)加入到集群的命令。
要開(kāi)始與集群進(jìn)行交互,請(qǐng)?jiān)谥骺毓?jié)點(diǎn)上運(yùn)行以下命令:
執(zhí)行以下 ??kubectl?
? 命令來(lái)獲取節(jié)點(diǎn)和集群的信息:
以上命令的輸出:
Nodes-Cluster-Info-Kubectl
通過(guò)執(zhí)行 ??kubeadm join?
? 命令來(lái)把兩個(gè)工作節(jié)點(diǎn)加入到集群。
注意:請(qǐng)從 ??kubeadm init?
? 命令的輸出中復(fù)制完整的命令。在我的例子中,命令如下:
在工作節(jié)點(diǎn) 1 上的輸出如下:
Worker-Node1-Join-Kunernetes-Cluster
在工作節(jié)點(diǎn) 2 上的輸出如下:
Worker-Node2-Join-Kubernetes-Cluster
在主控節(jié)點(diǎn)上執(zhí)行以下命令,檢查節(jié)點(diǎn)的狀態(tài):
為了使節(jié)點(diǎn)狀態(tài)變?yōu)?nbsp;??ready?
?,我們需要安裝容器莢Pod網(wǎng)絡(luò)插件,如 Calico 或 flannel。
8、安裝 Calico Pod 網(wǎng)絡(luò)插件
在主控節(jié)點(diǎn)上執(zhí)行以下命令安裝 Calico:
輸出:
Install-calico-pod-network-addon-debian11
在所有節(jié)點(diǎn)上執(zhí)行以下命令,配置防火墻允許 Calico 的端口:
執(zhí)行以下命令檢查下 Calico 的狀態(tài):
Calico-Pods-Status-Kuberenetes-Debian11
完美!現(xiàn)在再檢查下節(jié)點(diǎn)狀態(tài):
Nodes-status-after-calico-Installation
非常棒!上面的輸出說(shuō)明主控節(jié)點(diǎn)和工作節(jié)點(diǎn)的狀態(tài)都是 ??ready?
?。現(xiàn)在這個(gè)集群可以正常工作了。
9、檢查 Kubernetes 集群安裝是否正確
我們嘗試通過(guò) ??deployment?
? 命令來(lái)部署基于 Nginx 的應(yīng)用程序,來(lái)驗(yàn)證 Kubernetes 集群的安裝是否正確。執(zhí)行以下命令:
以上命令的輸出:
Nginx-Based-App-Kubernetes-Cluster-Debian11
使用以下的 ??curl?
? 命令通過(guò)節(jié)點(diǎn)端口 30036 來(lái)訪問(wèn)基于 nginx 的應(yīng)用程序。
注意:在 ??curl?
? 命令中,可以使用兩個(gè)工作節(jié)點(diǎn)任一的主機(jī)名。
Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11
以上的輸出說(shuō)明我們可以正常訪問(wèn)基于 nginx 的應(yīng)用程序了。
以上為全部?jī)?nèi)容。希望本文對(duì)你有用,參照本文可以在 Debian 11 上正常安裝 Kubernetes 集群。