kubelet啟動失敗的解決方案
原因之一:
是kubelet cgroup驅(qū)動程序“ cgroupfs”與docker cgroup驅(qū)動程序不同
公司的k8s,新增了一個(gè)節(jié)點(diǎn),但kubelet啟動一直報(bào)錯(cuò),無法啟動,網(wǎng)上找了半天,發(fā)現(xiàn)是kubelet cgroup驅(qū)動程序“ cgroupfs”與docker cgroup驅(qū)動程序不同,所導(dǎo)致,原因不詳。
cgroups 的全稱是 Linux Control Groups,主要作用是限制、記錄和隔離進(jìn)程組(process groups)使用的物理資源(cpu、memory、IO 等)。
systemd是系統(tǒng)自帶的cgroup管理器, 系統(tǒng)初始化就存在的, 和cgroups聯(lián)系緊密,為每一個(gè)進(jìn)程分配cgroups, 用它管理就行了. 如果設(shè)置成cgroupfs就存在2個(gè)cgroup控制管理器, 實(shí)驗(yàn)證明在資源有壓力的情況下,會存在不穩(wěn)定的情況。
一、查看docker cgroup驅(qū)動
[root@shrs-35 ~]# docker info|grep Driver Storage Driver: overlay2 Logging Driver: json-file Cgroup Driver: systemd
二、查看kubelet cgroup驅(qū)動
[root@shrs-35 ~]# systemctl show --property=Environment kubelet | cat Environment=KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml
發(fā)現(xiàn)確實(shí)是倆個(gè)cgroup驅(qū)動程序不一致導(dǎo)致的
三、解決辦法
3.1 修改docker的Cgroup Driver
修改/etc/docker/daemon.json文件
{
"exec-opts": ["native.cgroupdriver=systemd"]
}重啟docker
systemctl daemon-reload systemctl restart docker
3.2 修改kubelet的Cgroup Driver
修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件,增加–cgroup-driver=systemd (官方推薦用systemd)
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=systemd"
重啟kubelet
systemctl daemon-reload systemctl restart kubelet
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
kubernetes部署dashboard及應(yīng)用小結(jié)
Dashboard?是基于網(wǎng)頁的?Kubernetes?用戶界面,可以對?Deployment?實(shí)現(xiàn)彈性伸縮、發(fā)起滾動升級、重啟?Pod?或者使用向?qū)?chuàng)建新的應(yīng)用,這篇文章主要介紹了kubernetes部署dashboard,需要的朋友可以參考下2024-06-06
淺析k8s中各組件和kube?apiserver通信時(shí)的認(rèn)證和鑒權(quán)問題
這篇文章主要介紹了k8s中各組件和kube?apiserver通信時(shí)的認(rèn)證和鑒權(quán),本文使用的k8s集群是用kubekey搭建,命令是./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1,需要的朋友可以參考下2022-06-06
Kubernetes中crictl的詳細(xì)用法教程與應(yīng)用實(shí)戰(zhàn)記錄
crictl作為Kubernetes的容器運(yùn)行時(shí)接口(CRI)的命令行工具,為Kubernetes的調(diào)試和管理提供了強(qiáng)大的支持,通過本文的詳細(xì)介紹,你應(yīng)該已經(jīng)掌握了crictl的基本安裝、配置、常用命令以及高級用法,需要的朋友可以參考下2024-07-07
k8s:pod has unbound PersistentVolumeClaims問題及
部署redis-ha時(shí),Pod因PVC未綁定報(bào)錯(cuò),原因在于value.yaml中storageClassName為空,且未啟用DefaultDefaultStorageClass,解決方法是手動指定PVC的StorageClassName為現(xiàn)有存儲類,確保PV分配成功2025-07-07
kubernetes之statefulset搭建MySQL集群
這篇文章主要為大家介紹了kubernetes之statefulset搭建MySQL集群示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Google?Kubernetes?Engine?集群實(shí)戰(zhàn)詳解
這篇文章主要為大家介紹了Google?Kubernetes?Engine?集群實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

