内容纲要
概要描述
本文描述出现kubelet注册失败,日志报错Unable to register node xxx with API server nodes xxx is forbidden cannot modify node xxx的排查思路
详细描述
问题背景 & 问题描述
集群manager退役了两个节点,然后做了删除,两个节点修改了hostname之后,重新扩容进本集群
ip:10.140.0.41 原hostname: dc02-tdc-tdh08.tdh.xwbank.com 新hostname:dc02-tdc-tdh41.tdh.xwbank.com
ip:10.140.0.42 原hostname: dc02-tdc-tdh09.tdh.xwbank.com 新hostname: dc02-tdc-tdh42.tdh.xwbank.com
该命令下没有新扩容的节点信息
kubectl get nodes -owide

kubelet日志报错
Unable to register node xxx with API server nodes xxx is forbidden cannot modify node xxx

排查思路
1 hosts文件确认
确认各个节点/etc/hosts /etc/transwarp/conf/hosts 里面的hostname已经修改成新的hostname
进入apiserver,确认apiserver内部/etc/hosts 已经被修改生效

2 对比/opt/kubernetes/kubelet-config.yaml
对比这个文件和其他正常节点是否一致
3 对比/usr/lib/systemd/system/kubelet.service
对比这个文件除了node-ip和其他节点是否一致

4 对比/var/lib/kubelet/pki/ 下的内容,查看证书
kubelet-client-current.pem 链接到的 kubelet-client-2024-10-28-14-07.pem 签发不正确,使用了node:dc02-tdc-tdh08.tdh.xwbank.com 是老的hostname信息
cd /var/lib/kubelet/pki/
openssl x509 -text -in kubelet-client-xxxxxxxx.pem

解决方案
在有问题的41和42节点上 备份/var/lib/kubelet/pki 然后清空,,然后通过 systemctl restart kubelet 恢复正常。
cp -r /var/lib/kubelet/pki /var/lib/kubelet/pki_bak
rm -rf /var/lib/kubelet/pki/*
systemctl restart kubelet