kubelet 证书过期导致 k8s 集群 notready

pod 部署不上

[root@infra-k8s01 ~]# kb get po -n dev
NAME                                READY     STATUS        RESTARTS   AGE
recommend-system-5944d76fc7-hl242   0/1       Pending       0          43m

查看 pod 信息

[root@infra-k8s01 ~]# kb describe po recommend-system-5944d76fc7-hl242 -n dev
Name:               recommend-system-5944d76fc7-hl242
Namespace:          dev
...
Events:
  Type     Reason            Age                From               Message
  ----     ------            ----               ----               -------
  Warning  FailedScheduling  43m (x2 over 43m)  default-scheduler  0/20 nodes are available: 20 node(s) were not ready, 20 node(s) were out of disk space.

查看 node 信息

[root@infra-k8s01 ~]# kb get node
NAME           STATUS     ROLES     AGE       VERSION
192.168.1.14   NotReady   <none>    1y        v1.11.5
192.168.1.17   NotReady   <none>    1y  
### Kubernetes节点加入集群后状态一直是NotReady的解决方法 当Kubernetes节点加入集群后,状态一直显示为`NotReady`,这通常意味着节点未能正确完成加入流程或存在某些配置问题。以下是常见的排查和解决方法。 #### 1. 检查节点状态和事件信息 使用`kubectl describe node <node-name>`命令查看节点的详细信息,特别是`Conditions`部分。重点关注以下字段: - `Ready`:表示节点是否处于就绪状态。 - `NetworkReady`:表示节点的网络是否准备就绪。 - `MemoryPressure`:表示节点是否存在内存压力。 - `DiskPressure`:表示节点是否存在磁盘压力。 此外,检查`Events`部分,查看是否有与节点相关的错误信息,例如网络插件未就绪、kubelet配置错误等[^1]。 #### 2. 检查kubelet服务状态 确保节点上的`kubelet`服务正常运行。可以通过以下命令检查服务状态: ```bash systemctl status kubelet ``` 如果服务未运行,尝试启动并启用服务: ```bash systemctl start kubelet systemctl enable kubelet ``` 同时,检查`kubelet`的日志以获取更多调试信息: ```bash journalctl -u kubelet -n 100 ``` #### 3. 检查网络插件 如果使用了网络插件(如Calico、Flannel、Weave等),确保插件已正确部署且处于就绪状态。可以通过以下命令检查网络插件的状态: ```bash kubectl get pods -n kube-system ``` 如果发现网络插件的Pod处于`Pending`或`Error`状态,可以进一步查看Pod的日志进行调试。例如: ```bash kubectl describe pod -n kube-system <pod-name> ``` #### 4. 检查节点IP和网络配置 确保节点的IP地址配置正确,且与其他节点处于同一网络段。可以通过以下命令查看节点的IP地址: ```bash ip addr show ``` 同时,检查防火墙规则是否允许Kubernetes所需的端口通信。例如: - `6443`:Kubernetes API Server端口。 - `2379-2380`:etcd服务端口。 - `10250`:kubelet服务端口。 - `10251`:kube-scheduler服务端口。 - `10252`:kube-controller-manager服务端口。 #### 5. 检查节点证书 如果使用了基于证书的认证,确保节点的证书有效且未过期。可以通过以下命令检查证书的有效期: ```bash openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout ``` 如果证书过期,需要重新生成并更新证书。 #### 6. 检查节点资源状态 确保节点的资源(如CPU、内存、磁盘)未达到上限。可以通过以下命令查看节点的资源使用情况: ```bash kubectl describe node <node-name> ``` 重点关注`Allocatable`和`Capacity`字段,确保节点有足够的资源供Pod调度。 #### 7. 检查节点标签和污点 确保节点的标签和污点配置正确,避免因标签或污点导致Pod无法调度到该节点。可以通过以下命令查看节点的标签和污点: ```bash kubectl get nodes <node-name> -o jsonpath='{.metadata.labels}' kubectl get nodes <node-name> -o jsonpath='{.spec.taints}' ``` #### 8. 检查集群配置 确保集群的配置文件(如`/etc/kubernetes/config.yaml`)正确,特别是与API Server相关的配置。例如: ```yaml apiServer: certSANs: - "kubernetes" - "kubernetes.default" - "kubernetes.default.svc" - "kubernetes.default.svc.cluster.local" extraArgs: advertise-address: <node-ip> ``` #### 9. 重新加入节点 如果以上方法均无效,可以尝试将节点从集群中移除,并重新加入。首先,从主节点上删除节点: ```bash kubectl delete node <node-name> ``` 然后,在目标节点上重置Kubernetes配置: ```bash kubeadm reset ``` 最后,重新加入集群: ```bash kubeadm join <control-plane-endpoint> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值