k8s日常故障收集

案例:

error: failed to run Kubelet: cannot create certificate signing request: certificatesigningrequests.certificates.k8s.io is forbidden: User "kubelet-bootstrap" cannot create certificatesigningrequests.certificates.k8s.io at the cluster scope

原因是:kubelet-bootstrap并没有权限创建证书。所以要创建这个用户的权限并绑定到这个角色上。
解决方法是在master上执行

kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

案例一:

1.8版本之前.开启rbac后,apiserver默认绑定system:nodes组到system:node的clusterrole。v1.8之后,此绑定默认不存在,需要手工绑定,否则kubelet启动后会报认证错误,使用kubectl get nodes查看无法成为Ready状态

Unable to register node "192.168.122.3" with API server: nodes is forbidden: User "system:node:192.168.122.3" cannot create nodes at the cluster scope

解决方法:
使用命令kubectl get clusterrolebinding和kubectl get clusterrole可以查看系统中的角色与角色绑定

使用命令kubectl describe clusterrolebindings system:node查看system:node角色绑定的详细信息

创建角色绑定
在整个集群中授
<think>好的,用户需要查找Kubernetes相关的故障解决方案,特别是故障排查方法。首先,我需要回忆之前提供的K8s故障排查资料,确保信息准确。用户可能遇到Pod启动失败、网络问题或资源不足等常见问题,需要分步骤解答。 接下来,按照用户的要求,结构要清晰,分步骤说明。可能需要先列出常见的故障类型,再给出具体的排查命令和步骤。比如Pod状态异常时,查看describe和logs命令是关键。网络问题则需要检查服务、Endpoint和网络策略。还要注意引用之前的参考资料,比如引用[1]提到的分类排查和错误信息分析,引用[2]中的集群组件状态检查命令。这些需要自然地融入回答中,帮助用户定位问题。另外,用户希望生成相关问题,可能需要包括性能优化、工具使用、日志分析等方向。确保问题相关且能引导用户深入探索。最后,检查回答是否符合格式要求:使用中文,数学表达式正确,引用标识正确添加。避免使用Markdown,保持口语化,但实际回答需要结构化。确保所有技术细节准确,比如kubectl命令的正确用法和常见错误信息的处理方法。</think>### Kubernetes 故障排查方法 Kubernetes 故障排查通常需要从**集群组件状态**、**Pod状态**、**网络通信**、**资源配置**等多个维度入手。以下是具体步骤和常见场景的解决方案: --- #### 1. **检查集群组件状态** - **核心组件健康状态**: 使用命令 `kubectl get cs` 检查 `scheduler`、`controller-manager`、`etcd` 等组件是否健康。若组件异常,需检查对应日志(如 `kube-system` 命名空间下的 Pod 日志)[^2]。 ```bash kubectl get cs ``` --- #### 2. **Pod 启动失败问题** - **查看 Pod 事件和描述**: ```bash kubectl describe pod <pod-name> # 查看事件详情(如镜像拉取失败、资源不足) kubectl logs <pod-name> # 查看容器日志 ``` - **常见错误**: - **ImagePullBackOff**:镜像名称错误或权限不足。 - **CrashLoopBackOff**:应用启动失败(需检查应用日志)。 - **Pending**:资源不足或节点调度问题[^1]。 --- #### 3. **网络通信问题** - **Service 和 Endpoint 检查**: ```bash kubectl get svc <service-name> # 检查 Service 的 ClusterIP 和端口 kubectl get endpoints <service-name> # 确认后端 Pod 是否注册 ``` - **网络策略检查**: 若集群启用网络插件(如 Calico),需检查 `NetworkPolicy` 是否阻止流量。 --- #### 4. **资源不足问题** - **节点资源监控**: ```bash kubectl top nodes # 查看节点 CPU/内存使用率 kubectl top pods # 查看 Pod 资源消耗 ``` - **解决方案**:调整 Pod 的 `requests/limits` 或扩容节点。 --- #### 5. **配置错误排查** - **ConfigMap/Secret 引用检查**: ```bash kubectl get configmap <name> -o yaml # 确认配置内容是否正确 kubectl get secret <name> -o yaml # 检查 Secret 是否被正确挂载 ``` --- #### 6. **高级诊断工具** - **使用 `kubectl debug`**: 进入异常 Pod 的命名空间进行调试: ```bash kubectl debug -it <pod-name> --image=busybox -- sh ``` - **集群日志收集**: 通过 `kubectl logs` 或集群日志服务(如 EFK 栈)分析组件日志。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值