【K8s任務】配置 cgroup 驅動


參考:https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/

配置容器運行時 cgroup 驅動

容器運行時頁面提到: 由於 kubeadm 把 kubelet 視為一個系統服務來管理,所以對基於 kubeadm 的安裝, 我們推薦使用 systemd 驅動,不推薦 cgroupfs 驅動。

配置 kubelet 的 cgroup 驅動

kubeadm 支持在執行 kubeadm init 時,傳遞一個 KubeletConfiguration 結構體。 KubeletConfiguration 包含 cgroupDriver 字段,可用於控制 kubelet 的 cgroup 驅動。

FEATURE STATE: Kubernetes v1.21 [stable]

說明: 如果用戶沒有在 KubeletConfiguration 中設置 cgroupDriver 字段, kubeadm init 會將它設置為默認值 systemd。

這是一個最小化的示例,其中顯式的配置了此字段:

# kubeadm-config.yaml
kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta2
kubernetesVersion: v1.21.0
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd

這樣一個配置文件就可以傳遞給 kubeadm 命令了:

kubeadm init --config kubeadm-config.yaml

說明:
Kubeadm 對集群所有的節點,使用相同的 KubeletConfiguration。 KubeletConfiguration 存放於 kube-system 命名空間下的某個 ConfigMap 對象中。
執行 init、join 和 upgrade 等子命令會促使 kubeadm 將 KubeletConfiguration 寫入到文件 /var/lib/kubelet/config.yaml 中, 繼而把它傳遞給本地節點的 kubelet。

遷移到 systemd 驅動

要將現有 kubeadm 集群的 cgroup 驅動就地升級為 systemd, 需要執行一個與 kubelet 升級類似的過程。 該過程必須包含下面兩個步驟:

說明: 還有一種方法,可以用已配置了 systemd 的新節點替換掉集群中的老節點。 按這種方法,在加入新節點、確保工作負載可以安全遷移到新節點、及至刪除舊節點這一系列操作之前, 只需執行以下第一個步驟。

修改 kubelet 的 ConfigMap

1.用命令 kubectl get cm -n kube-system | grep kubelet-config 找到 kubelet 的 ConfigMap 名稱。

2.運行 kubectl edit cm kubelet-config-x.yy -n kube-system (把 x.yy 替換為 Kubernetes 版本)。

3.修改現有 cgroupDriver 的值,或者新增如下式樣的字段:

cgroupDriver: systemd

該字段必須出現在 ConfigMap 的 kubelet: 小節下。

更新所有節點的 cgroup 驅動

對於集群中的每一個節點:

1.執行命令 kubectl drain <node-name> --ignore-daemonsets,以 騰空節點
2.執行命令 systemctl stop kubelet,以停止 kubelet
3.停止容器運行時
4.修改容器運行時 cgroup 驅動為 systemd
5.在文件 /var/lib/kubelet/config.yaml 中添加設置 cgroupDriver: systemd
6.啟動容器運行時
7.執行命令 systemctl start kubelet,以啟動 kubelet
8.執行命令 kubectl uncordon <node-name>,以 取消節點隔離

在節點上依次執行上述步驟,確保工作負載有充足的時間被調度到其他節點。

流程完成后,確認所有節點和工作負載均健康如常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM