AWS上单节点OKD 4.8集群重启后无响应故障排查求助
故障排查思路
第一步:基础网络连通性校验
- 先确认域名解析是否正常:在本地执行
nslookup api.api1.hostname.info,对比返回的IP是否和你AWS单节点的公网/内网IP(取决于你平时访问的网络环境)一致,同时去AWS Route53控制台检查对应A记录是否存在、值是否匹配,有没有被自动修改或者过期。 - 检查AWS安全组、网络ACL配置:确认6443、443、80等OKD必要端口的入站规则是否允许你当前客户端IP访问,有没有因为重启后实例关联的安全组被误改。
- 直接用IP测试端口连通性:执行
telnet <节点IP> 6443或者nc -zv <节点IP> 6443,如果IP能通、域名不通,就是DNS解析问题;如果IP也不通,继续往下查节点内部的服务状态。
第二步:节点内部服务状态排查
首先通过AWS EC2的SSH或者会话管理器登录到节点操作系统
- 检查6443端口是否被监听:执行
ss -tulnp | grep 6443,正常情况下应该是kube-apiserver进程在监听该端口,如果没有输出,说明API服务根本没起来。 - 检查OKD核心服务状态:执行
crictl ps -a | grep kube-apiserver、crictl ps -a | grep etcd,查看这两个核心服务的容器是否在运行,有没有反复重启的情况。注意OKD 4.x的核心服务都是用cri-o运行的,不要用docker命令查询
- 查看核心服务日志:如果apiserver或者etcd容器异常,用
crictl logs <容器ID>查看具体报错,常见问题包括etcd数据损坏、节点IP变更后证书不匹配、kubeconfig配置错误。 - 检查节点IP是否变更:AWS EC2如果没有绑定弹性公网IP,重启后公网IP会变化,同时内网IP如果不是静态的也可能变更,OKD的证书是绑定部署时的IP和域名的,如果IP变了会直接导致核心服务启动失败。
第三步:单节点集群特有的问题排查
- 检查节点磁盘使用率:执行
df -h,如果/var/lib/etcd、/var/lib/containers对应的分区使用率到100%,会导致etcd写入失败、apiserver无法启动,之前的Pod无法创建的问题也可能和磁盘满有关。 - 检查证书有效期:执行
openssl s_client -connect localhost:6443 | openssl x509 -noout -dates,确认apiserver证书没有过期,如果部署时的证书配置有问题也可能出现重启后证书失效的情况。 - 检查kubelet服务状态:执行
systemctl status kubelet,确认kubelet是否在正常运行,如果kubelet挂了,所有核心容器都不会被调度启动,查看kubelet日志journalctl -u kubelet -f找具体报错原因。
第四步:恢复验证
如果排查到问题修复后,确认6443端口正常监听后,再在本地执行oc whoami测试连接,正常返回用户信息后再检查控制台、其他 workload 状态。
内容的提问来源于stack exchange,提问作者Billy Billy
相关产品推荐
相关产品推荐

