部署家用K8s学习集群时遇到kubelet节点注册失败、Lease权限错误及PodPending问题求助
问题背景
我正在搭建一个家用K8s节点,用来学习同时部署一些日常依赖的服务。
已完成的部署步骤
- 安装Fedora Server 39
- 参考Fedora官方的K8s部署指南搭建集群,但做了两处调整:
- 使用containerd替代CRI-O作为容器运行时
- 使用Canal替代Flannel网络插件,部署yaml用的是v3.27.0版本的Canal清单
- 执行完
kubeadm init后,已经运行了所有后续提示的命令来配置kubectl的环境
出现的问题
部署完成后,kubectl命令时而能正常执行,时而会出现6443端口服务不可达的错误。查看kubelet日志发现以下关键错误:
I0129 10:39:19.409618 1170 kubelet_node_status.go:70] "Attempting to register node" node="localhost"
E0129 10:39:19.411296 1170 kubelet_node_status.go:92] "Unable to register node with API server" err="nodes "localhost" is forbidden: node "localhost.localdomain" is not allowed to modify node "localhost"" node="localhost"
E0129 10:39:21.998836 1170 eviction_manager.go:262] "Eviction manager: failed to get summary stats" err="failed to get node info: node "localhost" not found"
E0129 10:39:26.204801 1170 controller.go:146] "Failed to ensure lease exists, will retry" err="leases.coordination.k8s.io "localhost" is forbidden: User "system:node:localhost.localdomain" cannot get resource "leases" in API group "coordination.k8s.io" in the namespace "kube-node-lease": can only access node lease with the same name as the requesting node" interval="7s"
已尝试的解决办法
- 重新禁用firewalld
- 执行
swapoff --all重新禁用swap - 将SELinux策略从ENFORCE改为PERMISSIVE
- 删除
/etc/kubernetes/kubelet.conf中所有localdomain相关的引用 - 通过
hostnamectl hostname localhost.localdomain修改主机名 - 重启服务器
但以上操作都没有解决问题,网上找到的方案大多集中在禁用防火墙或swap,对我无效。
当前集群状态信息
节点状态
执行kubectl get nodes输出:
NAME STATUS ROLES AGE VERSION localhost.localdomain NotReady control-plane 12h v1.27.10
所有命名空间Pod状态
执行kubectl get pods --all-namespaces输出:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system calico-kube-controllers-867bf4f5b5-kz2r9 0/1 Pending 0 121m kube-system canal-pw6j2 0/2 Pending 0 121m kube-system coredns-5d78c9869d-rvmzw 0/1 Pending 0 12h kube-system coredns-5d78c9869d-zn9lx 0/1 Pending 0 12h kube-system etcd-localhost.localdomain 1/1 Running 5 (12h ago) 12h kube-system kube-apiserver-localhost.localdomain 0/1 Running 8 (12h ago) 12h kube-system kube-controller-manager-localhost.localdomain 1/1 Running 7 (12h ago) 12h kube-system kube-proxy-mrsvp 0/1 Unknown 6 12h kube-system kube-scheduler-localhost.localdomain 1/1 Running 6 (12h ago) 12h
有没有大佬能给点下一步排查的思路?
备注:内容来源于stack exchange,提问作者Kirkland

