ECK排障-Kibana挂了

问题

发现Kibana页面无法打开,于是查看K8S控制台,发现Kibana挂了,显示镜像拉取失败。

解决过程

K8S控制台点击重新部署,仍然拉不起来,查看原因,依旧是镜像docker.elastic.co/kibana/kibana:7.14.0拉取失败,猜测大概率是K8S访问外部镜像源受限了。于是登上其它网络下的服务器,用docker pull这个kibana镜像,试了3台,失败两台(部分layer超时),成功一台。果断通过docker save将下载的kibana镜像输出到tar文件。内部的镜像仓库因为安全问题暂时无法使用,于是将kibana的tar文件直接传输到K8S的两个亲和节点上。

登上这两个节点,通过docker load导入kibana镜像,报无docker命令错误,和预期一致,因为记得这个部署的K8S集群运行时直接用的containerd。搜了一下containerd的客户端如何导入镜像,输入ctr -n k8s.io images import kibana.tar,这里的-n k8s.io指的是命名空间为k8s.io,因为K8S会使用这个命名空间。导入完毕后,输入ctr -n k8s.io images list | grep kibana检查一下,确认kibana镜像导入成功。

服务器上直接kubectl apply -f kibana.yaml启动kibana,没有报错。于是开心地去控制台查看kibana容器,搜了一下没找到,就在服务器上输入kubectl get pods -A | grep kibana,无返回,有点懵逼。在服务器上输入kubectl describe kibana,有kibana资源的详情信息返回,但是pod的确没有被创建。

思索一下,应该要查eck的日志,这个毕竟是通过自定义的资源创建的。输入kubectl -n elastic-system logs -f statefulset.apps/elastic-operator,报无法拉取operator镜像,心想该不会是eck operator也挂了吧,去控制台一看,果然挂了。于是去其它网络下的服务器,docker pull这个eck operator的镜像,然后重复kibana之前的流程。因为eck operator部署时是个stateful set,加上存储的亲和性,每次调度都到同一个节点,于是将镜像tar文件传送到这个固定节点上。通过ctr导入这个镜像,导入成功后,pod就直接起来了。

最后kubectl delete -f kibana.yaml删除之前部署失败的kibana,然后kubectl apply -f kibana.yaml重新部署,控制台显示部署成功,kibana的页面也能点开,完结撒花。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值