1、背景
春节后的周六补班,累啊,到公司发现docker和kubelet服务都被停止了,可能是春节期间担心发生安全隐患吧,服务启动后发现很多镜像无法拉取了

到相关的节点上去尝试拉取镜像发现报了404错误
docker pull xxx.xxx.xxx.xxx/dgms/dgms-kettle:2.15.0
Error response from daemon: error parsing HTTP 404 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>404 Not Found</title></head>\r\n<body>\r\n<center><h1>404 Not Found</h1></center>\r\n<hr><center>nginx/1.23.2</center>\r\n</body>\r\n</html>\r\n"
2、查看harbor镜像仓库

直接给我来了一个404

查看harbor容器均为正常

相关nginx日志也无错误信息
停掉harbor仓库docker-compose stop,使用curl -I 10.18.104.154,依然报404错误状态,由此推测是端口问题
使用ps -ef | grep nginx发现存在很多nginx进程,但是使用netstat -tnlp查看不到80端口

使用kill命令kill掉之后无法访问,重新创建harbor镜像仓库,同样会创建很多nginx进程,还是报同样的404错误,无奈只能修改端口测试
3、解决办法
修改配置端口为8081,使用install.sh重新创建harbor,访问正常

修改每个节点的/etc/docker/daemon.json配置文件,重启docker服务,并重新配置应用镜像仓库地址
cat /etc/docker/daemon.json
{
"log-opts": {
"max-size": "5m",
"max-file":"3"
},
"insecure-registries":["dockerhub.kubekey.local","xxx.xxx.xxx.xxx:8081","xxx.xxx.xxx.xxx"],
"live-restore": true,
"experimental": true,
"data-root":"/home/var/lib/docker"
}
此刻已经部署了大量的应用,挨个修改镜像地址比较麻烦,还好k8s使用了名称空间进行资源隔离,并且在部署项目时使用了名称空间对各个系统进行分离,使用kubectl get deployment -nxxx -oyaml > xxx-deploy.yaml方式导出相关需要修改的资源清单,使用sed命令进行批量修改地址,之后使用yaml清单重新创建!至此问题处理
遗憾的是没有想明白404错误是什么导致的!为什么所有容器停止了,甚至docker和harbor服务都停止了nginx进程依旧存在
春节刚过就这么忙,😭😭😭😭😭😭😭😭😭😭😭😭😭


















