K8s 常见问题

本文详细记录了在节点重启后,flannel配置文件丢失的问题,包括问题的现象、原因分析及最终的解决方案,对于遇到同样问题的读者具有一定的参考价值。

1、重启后,节点的flannel文件丢失

https://blog.youkuaiyun.com/Wuli_SmBug/article/details/104712653

### Kubernetes 集群常见故障及解决方案 #### 1. **内存泄漏问题** 当 Kubernetes (K8S) 集群长时间运行后,某些节点可能会因为内存不足而无法创建新 Pod。此时会遇到 `mkdir ... no space left on device` 的错误提示[^1]。 解决此问题的方法包括但不限于清理不必要的文件、优化容器镜像大小以及调整 Docker 和 K8S 的垃圾回收策略。 ```bash # 清理旧的容器和镜像 docker system prune -a ``` #### 2. **节点状态变为 NotReady** 执行命令 `kubectl get nodes` 后发现部分节点状态显示为 `NotReady`,其原因可能有以下几种情况: - **Kubelet 异常**:可以通过检查 Kubelet 服务的状态来确认是否存在异常。 ```bash systemctl status kubelet ``` - **网络故障**:需验证节点与 Master 节点间的通信是否正常。 - **资源压力**:如果节点上的 CPU 或内存被过度占用,则可能导致节点不可用。建议使用工具如 Prometheus 来监控资源使用率并设置合理的配额限制[^2]。 #### 3. **Pod 处于 ContainerCreating 状态** Pod 长时间停留在 `ContainerCreating` 状态通常是由于以下几个原因之一引起的: - Node 节点存在硬件或软件层面的问题; - 网络配置不当致使 IP 地址冲突或者未能成功分配给 Pods; - 存储卷绑定失败等问题[^3]。 针对这种情况的具体排查步骤如下所示: 1. 使用 `-o wide` 参数获取更详细的 Pod 分布信息; ```bash kubectl get pod -o wide | grep <pod_name> ``` 2. 查阅指定 Pod 的事件记录寻找潜在线索; ```bash kubectl describe pod <pod_name> ``` 3. 若怀疑是底层操作系统级的服务影响到了 Kubelet 功能实现的话还可以进一步查阅相关日志文件内容; ```bash tailf /var/log/kubelet.log ``` #### 4. **Docker/Kubernetes 版本兼容性引发的问题** 有时即使尝试重启了所有的组件依旧没能解决问题,那么很可能是当前使用的 Docker 或者 Kubernetes 版本之间存在着不匹配的情况所致。在这种情形下应该考虑更新至更高版本以获得更好的稳定性支持[^4]: ```bash apt-get update && apt-get install --only-upgrade docker-ce curl -LO https://dl.k8s.io/release/<latest_version>/bin/linux/amd64/kubeadm chmod +x ./kubeadm mv ./kubeadm $(which kubeadm) ``` #### 5. **安全性隐患** 除了技术方面的挑战之外还需要关注来自外部的安全威胁比如恶意攻击者试图入侵系统窃取敏感数据等行为的发生。例如曾经发生过一起案例就是因为没有妥善保护好公开可访问的 API Server 导致黑客能够轻易进入内部操作整个集群内的资源对象造成严重后果[^5]。因此强烈推荐采取措施加强身份认证机制同时定期审查权限授予列表防止意外泄露风险。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值