记K8s组件harbor和kuboard故障恢复
#记录一次工作实践#
故障现象:
本地私有仓库harbor和控制台kuboard均无法正常登陆。
解决过程:
1、harbor恢复过程
通过docker ps -a |grep harbor查看harbor相关的容器状态,发现均显示启动状态,但是仓库无法访问。
通过docker-compose ps 查看当前服务状态,发现各个组件都是运行状态。
本地telnet 命令查看harbor工作端口,发现端口不通。
分析:可能是harbor相关的容器运行故障,准备重新启动harbor。
docker-compose stop 尝试停止服务
命令执行正常,但是执行之后再次通过docker-compose ps 查看当前服务状态,发现各个组件依旧是运行状态。----初步结论:harbor没有正常停止。
再次通过docker ps -a |grep harbor查看harbor相关的容器状态,各个窗口依然是运行状态。
执行docker rm -f {containerId} 删除harbor各个组件的容器。
进入到harbor目录,运行./install.sh重装harbor容器,发现报错,提示https://registry-1.docker.io/v2无法连接,goharbor/prepare镜像无法获取。
---------弯路-------------
百度https://registry-1.docker.io/v2无法连接问题怎样解决
尝试修改daemon.json文件,修改hosts文件,重启docker
发现并没有用,依旧提示无法与https://registry-1.docker.io/v2建立连接。
在本地电脑上测试,发现也是一样的情况(但是本地开梯子之后可以正常连接,于是推断可能是docker官网屏蔽了国内IP的访问)
此路不通
-----------------------------
在本地开梯子之后,正常拉取到goharbor/prepare镜像。
执行docker save -o <保存的文件名.tar> <镜像名称>命令,将本地的镜像打成tar包。
将tar上传至服务器。
在服务器执行docker load -i 保存的文件名.tar,将镜像加载到服务器的docker中。
再次进入到harbor目录,运行./install.sh重装harbor容器,发现还是报错,但是此次错误是端口冲突。
通过netstat -anp |grep 冲突端口号,发现占用此端口的是系统进行rsyslogd,查看配置文件/etc/rsyslog.conf ,将rsyslogd服务的端口号修改为其它未使用的端口号,保存配置之后执行systemctl restart rsyslog重新启动rsyslog服务。
再次进入到harbor目录,运行./install.sh重装harbor容器,成功。
2、kuboard恢复过程
通过docker ps -a |grep kuboard,发现kuboard容器启动不完整,仅包含kuboard-v3、kuboard-etcd、kuboard三个容器,且kuboard容器没有正常启动;kuboard-agent容器没有正常创建。
尝试重新启动kuboard,发现还是没有正常启动kuboard-agent。
进入kuboard-agent安装目录,发现有两个配置文件:
执行命令kubectl delete -f kuboard-v3.yaml,移除现在的kuboard容器。
执行kubectl get pods -n kuboard,看到kuboard相关的pod已经全部都没有了。
执行kubectl apply -f kuboard-v3.yaml,重新部署kuboard;
执行kubectl apply -f kuboard-agent2.yaml,重新部署kuboard-agent。
kuboard正常启动。