kubernetes运维---node从集群消失(bootstrap-kubelet.kubeconfig)

本文讲述了如何解决kubectl中节点为空的问题,通过排查ping通性,发现kubelet证书缺失。作者详细介绍了修复步骤,包括重新生成bootstrap-kubelet.kubeconfig、重启kubelet并安装CNI插件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,背景

在执行kubectl get node时发现节点直接为空

二,排查过程

(1)查看节点是否能ping通

 (2)确定节点是正常运行的,登录192.168.31.81节点查看kubelet信息

journalctl -xe -u kubelet -f

查看到报Unable to register node "k8s-master01" with API server: nodes is forbidden: User "system:anonymous" cannot create resource "nodes" in API group "" at the cluster scope错误,

发现缺少kubelet客户端证书,该证书主要来源于bootstrap-kubelet.kubeconfig文件,这里重新生成该文件,然后重启kubelet

 上面看到节点已经出现了,剩下的就是安装CNI插件了。

<think>嗯...用户这次提出了一个非常具体的Kubernetes运维问题,关于Rancher集群卡在updating状态。从技术深度来看,这属于Kubernetes集群部署的故障排查范畴,用户应该是个有一定容器平台管理经验的运维人员。用户特别提到了要分析calico/etcd/kube-apiserver等核心组件的日志,说明ta已经具备基本的排障思路。不过注意到用户引用了大量K8s配置片段(虽然有些和当前问题关联性不强),可能ta在排查时已经尝试过检查这些组件的配置。考虑到Rancher的架构特性,这个问题需要从三个层面分析:Rancher管理平面(cattle-cluster-agent)、本地集群组件(kubelet等)、网络插件(calico)。用户没有提供具体日志,所以需要给出通用排查路径。最关键的突破口应该是kubelet日志和cattle-cluster-agent状态。因为如果kubelet无法正常注册节点,Rancher就会持续显示updating。另外calico的IP分配问题也是常见阻塞点,特别是当host-gw模式配置错误时。需要提醒用户注意Rancher的版本差异:2.5.x和2.6.x的troubleshooting方式不同。用户没提版本号,所以回复里要包含通用方法,但补充版本提示。用户上次询问的是快速排序算法,这次突然跳到K8s运维,可能是不同的项目需求。不过从ta能精确列出组件名称来看,技术水平应该不错,可以直接给技术性较强的解决方案。</think> Rancher 集群卡在 **"Updating"** 状态是常见问题,通常源于 **控制平面组件未就绪** 或 **关键进程(如 `cattle-cluster-agent`)通信异常**。以下是系统性排查步骤与解决方案: --- ### **一、核心排查方向** 1. **`cattle-cluster-agent` 状态** - **检查 Pod 是否运行正常**(通常在 `cattle-system` 命名空间): ```bash kubectl get pods -n cattle-system -o wide | grep cluster-agent ``` - **问题表现**: - Pod 处于 `CrashLoopBackOff` 或 `Pending` 状态 - READY 列为 `0/1`(如 `0/1`) - **修复方案**: - 检查节点资源是否充足(CPU/内存) - 排查网络策略是否阻断 agent 与 Rancher Server 通信(默认端口 `443`) - 查看日志定位错误: ```bash kubectl logs -n cattle-system -l app=cattle-cluster-agent ``` 2. **控制平面组件健康度** - **检查关键组件状态**: ```bash kubectl get pods -n kube-system -o wide | grep -E 'kube-apiserver|kube-controller-manager|kube-scheduler|calico|etcd' ``` - **重点关注**: - `etcd` 集群是否健康(`etcdctl cluster-health`) - `calico` 是否报告 `IPAM` 错误(`kubectl logs -n kube-system -l k8s-app=calico-node`) - `kube-controller-manager` 是否因证书问题卡住(引用[4]的 Node Controller 异常) 3. **节点 `kubelet` 服务状态** - **检查所有节点的 `kubelet` 是否活动**: ```bash systemctl status kubelet --no-pager # 在问题节点执行 journalctl -u kubelet -n 100 -f # 查看实时日志 ``` - **常见错误**: - 证书过期(`x509: certificate has expired or is not yet valid`) - 镜像拉取失败(如 `ImagePullBackOff`) --- ### **二、网络与证书深度分析** #### **1. Calico 网络问题** ```bash # 检查 Calico BGP 对等连接状态 calicoctl node status ``` - **典型故障**: - `IP pool` 耗尽(日志含 `block is already assigned`) → 扩容 IP 池范围 - `Felix` 服务异常 → 重启 Calico Pods #### **2. 证书过期** - **检查证书有效期**(在控制节点执行): ```bash openssl x509 -enddate -noout -in /etc/kubernetes/ssl/kube-apiserver.pem openssl x509 -enddate -noout -in /etc/kubernetes/ssl/kube-controller-manager.pem ``` - **解决方案**: - 通过 `kubeadm certs renew all` 更新证书(RKE 集群需使用 `rke cert rotate`) - 重启控制组件(如 `docker restart kube-apiserver`) #### **3. ETCD 集群异常** - **检查集群一致性**: ```bash ETCDCTL_API=3 etcdctl --endpoints=https://[IP]:2379 --cacert=/etc/kubernetes/ssl/etcd-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem endpoint health ``` - **修复建议**: - 备份数据后重启 `etcd` 容器 - 重新添加新节点(若节点永久离线) --- ### **三、Rancher 管理集群操作** 1. **强制删除卡住集群** ```bash kubectl delete cluster.management.cattle.io [CLUSTER-ID] --force --grace-period=0 ``` 2. **重新导入集群** - 在 Rancher UI 删除集群 → 重新运行导入命令(`kubectl apply`) - 确保新生成的 `cattle-cluster-agent` 版本匹配 Rancher Server 版本 --- ### **四、日志分析命令速查** | 组件 | 日志命令 | |---------------------|--------------------------------------------------------------------------| | `cattle-cluster-agent` | `kubectl logs -n cattle-system -l app=cattle-cluster-agent` | | `kube-apiserver` | `kubectl logs -n kube-system kube-apiserver-[node-name]` | | `kube-controller` | `kubectl logs -n kube-system kube-controller-manager-[node-name]` | | `calico-node` | `kubectl logs -n kube-system -l k8s-app=calico-node` | | `etcd` | `docker logs etcd` (或检查 journalctl -u etcd) | --- ### **常见根本原因** 1. **证书过期**(尤其 `controller-manager` 客户端证书)[^4] 2. **网络插件(Calico)IP 分配失败** 3. **Rancher agent 与 Server 通信被防火墙阻断** 4. **底层资源不足(CPU/内存/存储)** > **提示**:通过 `kubectl describe node [node-name]` 查看节点资源水位,确保 `kubelet` 有足够资源启动核心 Pod。 --- **
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值