分享新加坡服务器 Kubernetes 集群的运维实战,从部署到监控的完整流程。
问题一:Pod 调度失败 表现:Pod 一直 Pending,无法调度。 可能原因:节点资源不足;节点亲和性不匹配;污点未容忍。 排查步骤:kubectl describe pod;kubectl get nodes;查看事件。 快速修复:扩容节点;调整资源请求;配置容忍。
问题二:服务访问超时 表现:Service 无法访问,超时。 可能原因:Pod 不健康;Service 配置错误;网络插件问题。 排查步骤:kubectl get endpoints;curl 测试 Pod;检查网络策略。 快速修复:检查 Pod 健康状态;修复 Service;检查 CNI。
问题三:节点 NotReady 表现:节点状态 NotReady,Pod 被驱逐。 可能原因:节点宕机;kubelet 故障;网络问题。 排查步骤:ssh 到节点;journalctl -u kubelet;检查网络。 快速修复:重启 kubelet;修复网络;替换节点。
问题四:集群资源不足 表现:大量 Pod Pending,CPU/内存不足。 可能原因:资源不足;资源请求设置过大。 排查步骤:kubectl top nodes;查看资源使用。 快速修复:扩容节点;调整资源请求;优化应用。
问题五:etcd 性能下降 表现:集群响应慢,etcd 超时。 可能原因:etcd 磁盘 IO 慢;数据量过大。 排查步骤:etcdctl endpoint status;iostat 看磁盘。 快速修复:用 SSD 存储 etcd;定期压缩 etcd;优化 etcd 参数。
集群规划 1) 节点规格:至少 4C/8G,生产建议 8C/16G+ 2) etcd:独立 SSD,3 或 5 节点 3) 网络:选择 Calico 或 Cilium 4) 存储:使用 StorageClass 动态供给 5) 监控:Prometheus + Grafana
核心组件 - 网络:Calico(网络策略丰富) - 存储:Ceph 或云存储 - 监控:Prometheus + Grafana + AlertManager - 日志:ELK 或 Loki - 网关:Ingress Nginx 或 Traefik
运维要点 1) 定期升级 Kubernetes 版本 2) 监控节点和 Pod 状态 3) 配置自动扩缩容 4) 定期备份 etcd 5) 灾备演练
生产环境建议 1) 控制平面和工作节点分离 2) 多可用区部署 3) 配置 Pod 反亲和性 4) 设置资源请求和限制 5) 使用 HPA 自动扩缩容
总结:Kubernetes 运维需要系统化的监控和管理。资源规划、健康检查、自动扩容,三者保证集群稳定运行。