Kubernetes Weblogic Operator安装失败NoRouteToHostException排障
故障环境与背景
- 集群架构:1台部署master角色的VM主机,2台独立VM部署worker角色节点,目标为部署Kubernetes Weblogic Operator
- 故障前置历史:此前曾成功部署Operator并稳定运行,升级域时出现进程卡死问题,遂清理全量相关组件,重装整套Kubernetes与Weblogic Operator,本次安装出现无法定位的故障,怀疑清理环节存在残留配置。
已执行的部署流程
- Kubernetes集群部署
- 清理所有已知K8s相关组件后,执行集群初始化命令,指定适配Flannel的Pod网段:
kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock --ignore-preflight-errors=all
- 部署Flannel网络插件:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- 2台worker节点顺利加入集群后,节点状态均为Ready:
NAME STATUS ROLES AGE VERSION master-node Ready control-plane 43h v1.24.0 worker-node1 Ready <none> 43h v1.24.1 worker-node2 Ready <none> 43h v1.24.1
- Weblogic Operator部署
- 参照Oracle官方Quick Start指南操作,提前完成所需命名空间、服务账号配置,拉取全量依赖镜像、安装Helm包管理工具后,执行Operator安装命令:
helm install sample-weblogic-operator kubernetes/charts/weblogic-operator \ --namespace sample-weblogic-operator-ns \ --set image=ghcr.io/oracle/weblogic-kubernetes-operator:3.4.0 \ --set serviceAccount=sample-weblogic-operator-sa \ --set "enableClusterRoleBinding=true" \ --set "domainNamespaceSelectionStrategy=LabelSelector" \ --set "domainNamespaceLabelSelector=weblogic-operator\=enabled"
故障现象
- Operator Pod持续处于
CrashLoopBackOff状态,无法正常启动:
sample-weblogic-operator-ns weblogic-operator-85667bfb6f-fdcw6 0/1 CrashLoopBackOff 406 (3m22s ago) 22h
- Pod事件持续报探针检测失败、容器重启退避:
Warning Unhealthy 20m (x1077 over 22h) kubelet Liveness probe failed: Warning BackOff 5m12s (x4906 over 22h) kubelet Back-off restarting failed container Warning Unhealthy 6s (x2424 over 23h) kubelet Readiness probe failed:
- 集群全量Pod运行状态参考:

- Operator Pod日志反复抛出网络连通性异常:
"message":"Exception thrown","exception":" io.kubernetes.client.openapi.ApiException: java.net.NoRouteToHostException: No route to host
- 排查集群组件日志发现,coredns Pod持续打印等待kubernetes插件就绪的日志:
[INFO] plugin/ready: Still waiting on: "kubernetes"
- 初步判断为网络配置异常,但无法定位具体根因。
排障方案
coredns持续卡等kubernetes插件、Operator抛出NoRouteToHostException,核心原因是K8s集群内部网络转发失效,和Weblogic Operator本身的Helm配置无关,按以下优先级排查:
- 优先排查iptables残留规则
重装集群时如果没有清空旧的iptables规则,旧的Service、CNI转发规则残留是最高发的诱因。所有节点(master+2台worker)都要执行以下操作:- 停服:
systemctl stop kubelet cri-dockerd - 清空规则:
iptables -F iptables -t nat -F iptables -t mangle -F iptables -X ipvsadm -C # 若之前使用ipvs转发模式则执行 - 重启服务:
systemctl start cri-dockerd kubelet
- 停服:
- 排查Flannel网络连通性
- 检查所有节点的
/run/flannel/subnet.env文件,确认分配的Pod网段和初始化时指定的10.244.0.0/16一致 - 所有节点临时关闭防火墙、SELinux验证:
systemctl stop firewalld && setenforce 0,VM环境默认防火墙经常拦截Flannel VxLAN使用的8472/UDP端口,直接导致跨节点、Pod到APIServer的路由不通 - 查看Flannel Pod日志,确认VxLAN网卡创建、跨节点路由下发无报错
- 在Operator Pod所在节点直接执行
curl -k https://10.96.0.1:443(默认K8s APIServer的ClusterIP),如果连不通说明集群Service网段转发完全失效
- 检查所有节点的
- 排查控制面服务状态
- Master节点执行
ss -lntp | grep kube-apiserver,确认6443端口正常监听 - 查看
/etc/kubernetes/manifests目录下的静态Pod配置,确认没有旧集群残留的配置文件——重装时如果没清空该目录,新旧配置冲突会导致APIServer、控制器服务异常 - 查看kube-apiserver、coredns的运行日志,确认没有证书无效、后端地址配置错误的问题
- Master节点执行
- 彻底清理残留重新初始化(以上步骤无效时执行)
所有节点执行全量清理:
重新初始化集群前,先确认节点间6443/TCP、8472/UDP端口连通性正常,集群初始化、Flannel部署完成,coredns Pod全部进入Running状态后,再安装Weblogic Operator。kubeadm reset -f rm -rf /etc/cni/net.d /opt/cni/bin /var/lib/cni /var/lib/etcd /var/lib/kubelet/* /etc/kubernetes iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X ipvsadm -C systemctl daemon-reload systemctl restart cri-dockerd
内容的提问来源于stack exchange,提问作者Rafail K.
相关产品推荐
相关产品推荐

