解决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

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

相关推荐
黄泉路醉s1 天前
云原生与 AI 驱动下的数据工程新图景——解读 DZone 数据工程趋势报告【附报告下载】
人工智能·云原生
晚风吹长发1 天前
Docker基础——Docker Compose(容器编排)
linux·运维·服务器·docker·容器
运维大师1 天前
【K8S 运维实战】26-大规模集群优化
运维·kubernetes
tianyu2341 天前
Docker 数据目录迁移指南
linux·docker·容器·eureka·centos
张忠琳1 天前
【NVIDIA】k8s-device-plugin v0.19.3 支撑模块深度代码分析之八
云原生·容器·架构·kubernetes·nvidia
晚风吹长发2 天前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
运维大师2 天前
【K8S 运维实战】23-性能调优全链路
运维·kubernetes
运维大师2 天前
【K8S 运维实战】24-资源优化HPA与VPA
运维·kubernetes·github
瞬间&永恒~2 天前
【MySQL】 主从复制多拓扑搭建实验
运维·数据库·mysql·云原生
张忠琳2 天前
【NVIDIA】k8s-device-plugin v0.19.3 标签管理模块 (internal/lm) 深度分析之六
云原生·容器·架构·kubernetes·nvidia