Kubernetes K8s 结合国内外文章解决 The kubelet is not running

镜像下载、域名解析、时间同步请点击阿里云开源镜像站

初学K8s,好好教程不跟着来,非要全部安装最新的docker 和 k8s,经过4小时奋战终于解决!

先说明下docker是最新版的安装,又安装K8s

cat > /etc/yum.repos.d/kubernetes.repo <<eof [kubernetes] name="Kubernetes" baseurl="https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64" enabled="1" gpgcheck="0" repo_gpgcheck="0" gpgkey="https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg" https: mirrors.aliyun.com kubernetes yum doc rpm-package-key.gpg eof < code></eof>
yum install -y --nogpgcheck kubelet kubeadm kubectl
systemctl enable kubelet

这样直接安装成功,得到 1.23.5-0,版本号就是v1.23.5

然后噩梦开始,视频教程人家指定了v1.19.0直接成功安装,我这倒好,报错开始

Initial timeout of 40s passed.

[kubelet-check] It seems like the kubelet isn't running or healthy.

[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused.

[kubelet-check] It seems like the kubelet isn't running or healthy.

....

This error is likely caused by:
        - The kubelet is not running
        - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

报错如上,首先先把你之前查到的资料见鬼去,反正在我这是不好使的(我这里都是新版,2022-03-18新装的)

1、systemctl start kubelet 这个在只有【主】的时候根本起不来,所以不用折腾看状态了,有就行了

2、/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件,我相信你一定查到了,为啥我没有,因为你的在这/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf(这个你最好没改过,改过的话改回去,保持默认就好),上面那个文件就该没有的,连那个目录都不该有的(再次强调新版!旧版不知道,v1.23.5我这是),有文章让你新建并添加什么的,删了吧没用的,启动了也是假象

[root@k8s-master ~]# cd /etc/systemd/system/kubelet.service.d/
-bash: cd: /etc/systemd/system/kubelet.service.d/: &#x6CA1;&#x6709;&#x90A3;&#x4E2A;&#x6587;&#x4EF6;&#x6216;&#x76EE;&#x5F55;

3、echo ‘{“exec-opts”: [“native.cgroupdriver=systemd”]}’ >> /etc/docker/daemon.json,我相信你已经见过这句了,是的!就是这句,这句真是重点!一开始我就对了,但是先往下看吧,真坑

4、还有让你们改docker images tag的,歇了吧,用不到的

开始噩梦安装之旅,注意这里我已经替换为国内的阿里源,所以根本不用改 docker Tag!只要能正常拉回来就没有问题!

kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version=v1.23.5 \
  --pod-network-cidr=10.244.0.0/16  \
  --service-cidr=10.96.0.0/12  \
  --apiserver-advertise-address=192.168.0.2

重点来了

故障排除,这也是重点,你知道哪里出问题了![焦点1]

[En]

Troubleshooting, this is also the point, you know what is wrong! * [focus 1] *

journalctl -xeu kubelet | grep Failed

失败时定位为羊毛(实际上只有一条线,我改变了线,这样看起来很好)

[En]

Positioned as wool in failure (actually one line, I change the line, so it looks good)

3&#x6708; 18 20:21:04 k8s-master kubelet[36490]: E0318 20:21:04.954990   36490 server.go:302]
"Failed to run kubelet"
err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is
different from docker cgroup driver: \"cgroupfs\""

实际你只要在你的/etc/docker/daemon.json 中加入 “exec-opts”: [“native.cgroupdriver=systemd”]

我进去了!这不是加法,它不起作用!这就是我被困的地方!如果你犯了错误,请看下面的例子![焦点2]

[En]

I’m in! It’s not an addition, it doesn’t work! This is where I was trapped! In case you make a mistake, look at the example! * [focus 2] *

  1 {
  2   "registry-mirrors": ["https://&#x4F60;&#x7684;&#x52A0;&#x901F;&#x5730;&#x5740;.mirror.aliyuncs.com"],
  3   "log-driver": "json-file",
  4   "log-opts": {
  5     "max-size": "10m",
  6     "max-file": "1"
  7    },   &#x3010;&#x770B;&#x8FD9;&#xFF01;&#x8FD9;&#x52A0;&#x4E2A;&#x9017;&#x53F7;&#xFF0C;&#x4E0B;&#x9762;&#x52A0;&#x8FD9;&#x53E5;&#xFF0C;&#x7ED3;&#x5C3E;&#x6CA1;&#x6709;&#x9017;&#x53F7;&#x3011;
  8   "exec-opts": ["native.cgroupdriver=systemd"]
  9 }

然后,你就可以

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
kubeadm reset #&#x91CD;&#x7F6E;&#x4E86;&#x6CA1;&#x4E8B;&#x7684;&#xFF0C;&#x53CD;&#x6B63;&#x4E4B;&#x524D;&#x4E5F;&#x8D77;&#x4E0D;&#x6765;~
y

systemctl status kubelet #&#x521D;&#x59CB;&#x5C31;&#x662F;&#x542F;&#x52A8;&#x4E0D;&#x4E86;&#x7684;
#&#x9A8C;&#x8BC1;cgroupdriver &#x4FEE;&#x6539;&#x751F;&#x6548; &#xFF08;&#x8FD9;&#x4E24;&#x884C;&#x90FD;&#x662F;&#x9A8C;&#x8BC1;&#x7684;&#xFF09;&#x770B;&#x5230;systemd &#x5C31;&#x5BF9;&#x4E86;
docker info -f {{.CgroupDriver}}
docker info | grep -i cgroup

最后再执行

kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version=v1.23.5 \
  --pod-network-cidr=10.244.0.0/16  \
  --service-cidr=10.96.0.0/12  \
  --apiserver-advertise-address=192.168.0.2

世界核平!

Kubernetes K8s 结合国内外文章解决 The kubelet is not running

好了,万马奔腾~

原文链接:https://blog.csdn.net/zhangbest5/article/details/123583927

Original: https://www.cnblogs.com/helong-123/p/16453847.html
Author: 萌褚
Title: Kubernetes K8s 结合国内外文章解决 The kubelet is not running

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523177/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球