解决k8s UI界面进不去

一、引言

这两天迁移网络,直接重新部署docker还有k8,结果全部搞定之后,一开始的K8UI界面可以浏览的,结果就刷新了一下发现直接掉了。

去到服务器,发现一直在报错:

二、原因

对于服务器输出的:IPVS no destination available

一般是因为有 Service 用了 externalTrafficPolicy:Local,当 Node 上没有该 Service 对应 Pod 时,Node 上的该 Service 对应 NodePort 的 IPVS 规则里,RS 列表为空。当有流量打到这个 Node 的对应 NodePort 上时,由于 RS 列表为空,内核就会报这个 warning 日志。

在云厂商托管的 K8S 服务里,通常是 LB 会去主动探测 NodePort,发到没有这个 Service 对应 Pod 实例的 Node 时,报文被正常丢弃,从而内核报 warning 日志。

这个日志不会对服务造成影响,可以忽略不管。如果是在腾讯云 TKE 环境里,并且用的 TencentOS,可以设置一个内核参数来抑制这个 warning 日志输出:

bash 复制代码
sysctl -w net.ipv4.vs.ignore_no_rs_error=1

以上排错来自:IPVS no destination available | Kubernetes 排障指南

ok,人家说了,这个玩意不影响功能,为啥我的还是有问题,继续看。

三、pod

我发现虽然我的 k8s 的UI界面起不来,但是我依赖于其中的 jekins 却可以启动,包括nacos啥的都没有问题,那就说明肯定其中的 pod 组件出了问题,对于 pod ,如果有小伙伴不理解的可以看这边文章:K8s 核心概念深度解析:Pod 是什么?-CSDN博客

ok,开始排查

bash 复制代码
 kubectl get pods -n kubesphere-system

回:

这里可以看到,apiserver,console,controller-manager 这三个镜像都 ImagePullBackOff (拉取失败)

现在我们来检查一下看看我们的 docker 源是否有问题。

bash 复制代码
root@k8s-master:~# docker pull kubesphere/ks-console:v3.4.1

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

amazing!拉不到我要的镜像,哥们加速器也是配好的。

一番搜查,看到这篇文章:kubesphere/ks-controller-manager:v3.4.1镜像无法拉取的问题 - KubeSphere 开发者社区

这个哥们说镜像被清理了?

咱也不知道,那就直接拉取他的东西到我们的docker源里面去。

bash 复制代码
docker pull harrymore/ks-controller-manager:v3.4.1

docker tag harrymore/ks-controller-manager:v3.4.1 kubesphere/ks-controller-manager:v3.4.1

接着修改一下拉取策略

bash 复制代码
# 编辑 ks-console Deployment 配置
kubectl edit deployment ks-console -n kubesphere-system

# 找到 spec.template.spec.containers[0] 段落
containers:
- name: ks-console
  image: kubesphere/ks-console:v3.4.1
  imagePullPolicy: IfNotPresent  # 关键配置:仅本地无镜像时才拉取
  # 其他配置保持不变

接着

bash 复制代码
# 1. 删除异常 Pod(Deployment 会自动重建,使用本地镜像)
kubectl delete pod -n kubesphere-system -l app=ks-console,tier=frontend

# 2. 实时查看 Pod 状态(等待变为 Running/1/1)
kubectl get pods -n kubesphere-system -l app=ks-console,tier=frontend -w

ok,启动好了没有问题了。

四、如果还是不行

我的情况是因为突然去拉了官方的源,可能是我重装的时候没有修改策略,正常来说我都是直接拉我自己的私有仓库里的东西,包括我的docker源应该都是包含我的镜像的。

查看本地所有镜像

docker images

哥们后面才发现原来我有的,重复拉取了,后面把 Harrymore 的删掉了,大家如果没有就拉取Harrymore的。

如果你也有了以上的这些 ks-controller-manager 等镜像,可以直接用以下命令,就不需要一个个去修改策略了。

bash 复制代码
# 1. 批量设置镜像拉取策略:强制使用本地 Docker 镜像
kubectl -n kubesphere-system patch deployment ks-console --type='json' -p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"IfNotPresent"}]'
kubectl -n kubesphere-system patch deployment ks-apiserver --type='json' -p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"IfNotPresent"}]'
kubectl -n kubesphere-system patch deployment ks-controller-manager --type='json' -p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"IfNotPresent"}]'

# 2. 重启 kubelet:让 kubelet 重新对接 Docker,识别本地镜像
systemctl restart kubelet

# 3. 滚动重启 KubeSphere 核心 Deployment,触发 Pod 重建
kubectl -n kubesphere-system rollout restart deployment ks-console ks-apiserver ks-controller-manager

# 4. 实时查看 Pod 状态(等待全部变为 Running/1/1)
kubectl get pods -n kubesphere-system -l app in (ks-apiserver,ks-console,ks-controller-manager) -w

验证:

bash 复制代码
# 1. 查看 ks-console Service 的 Endpoints(非空即为成功)
kubectl describe service ks-console -n kubesphere-system | grep Endpoints

# 2. 测试 KubeSphere 控制台访问(返回 200/302 即为正常)
curl -I http://192.168.100.27:30880

END

如果觉得这份基础知识点总结清晰,别忘了动动小手点个赞👍,再关注一下呀~ 后续还会分享更多有关面试问题的干货技巧,同时一起解锁更多好用的功能,少踩坑多提效!🥰 你的支持就是我更新的最大动力,咱们下次分享再见呀~🌟

相关推荐
阿里云云原生13 小时前
Personal Agent 观察:拆解全天候运行的技术挑战
云原生·agent
SelectDB技术团队15 小时前
Snowflake 的开源替代怎么选:能力对照、三条部署路径与迁移执行
大数据·数据库·云原生·开源·snowflake·apache doris
时间售卖铺15 小时前
Nginx 反向代理
运维·nginx·云原生
Regentsoft丽晶软件15 小时前
服装B2B分销返利规则引擎:多返利池与历史订单区分的技术设计
云原生·产品运营·需求分析
阿里云云原生16 小时前
非算法工程师也能看懂,推理框架的来龙去脉
云原生
Lysander.Jovian17 小时前
Node 和 Cluster部署
kubernetes
m0_6174939417 小时前
昇腾 NPU Docker 部署实战:解决 stub library 报错并实现模型正常加载
运维·docker·容器
科学熊18 小时前
深入浅出 Kubernetes介绍
kubernetes
xixiaoyunya18 小时前
Docker 常用命令与实战:从入门到部署一个简单应用
docker·容器·eureka
ん贤21 小时前
温习微服务基础知识
微服务·云原生·架构