最近我在使用华为的Flexus应用服务器时,遇到了一个关于Docker镜像拉取的问题。我的服务器配置是 4C8G,虽然看上去不算强大,但我还是希望能顺利运行 Rainbond 的 Docker 版本。根据安装教程,我开始了安装。
安装遇到的问题
首先,我安装了 Loki,但在使用 Grafana 时,却发现它根本找不到容器的日志资源。我用以下命令查看 Pods 状态:
kubectl get pods -n default
结果我发现 Promtail 组件的拉取失败了。
为了查明原因,我执行了下面这条命令查看详细信息:
kubectl describe pod promtail-daemonset-8ns24 -n default
错误日志分析
从日志中,我看到如下错误信息:
Failed to pull image "grafana/promtail:2.7.3": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/grafana/promtail:2.7.3": failed to resolve reference "docker.io/grafana/promtail:2.7.3": unexpected status from HEAD request to https://dockerhub.azk8s.cn/v2/grafana/promtail/manifests/2.7.3?ns=docker.io: 403 Forbidden
这个错误显示 dockerhub.azk8s.cn 服务有问题。经过搜索,我了解到今年年底各大云厂商对镜像加速服务的政策逐渐收紧,有些直接停止支持。
寻找替代方案
无奈之下,我开始寻找新的加速服务。在 B 站上,我找到了一些可用的服务,过程详见另一篇文章,如何解决 Docker 镜像无法拉取的问题。
更改配置
有了新加速服务后,我需要修改相应的配置。首先检查本机的 /etc/docker/daemon.json 文件,结果发现并没有包含 https://dockerhub.azk8s.cn 这个地址。这时我突然想到,由于 Docker 版的 Rainbond 是基于 K3S 部署的,所以应该查看 K3S 的配置。
最终我找到 K3S 的配置文件:
/var/lib/docker/overlay2/676c9858ae8ea7dbcd70dae5a7f6a90b72c901fe229278884a46ca3a0c1e0153/merged/etc/rancher/k3s/registries.yaml
果然,在这个文件中找到了 https://dockerhub.azk8s.cn 的设置。我把它修改为可用的新服务地址,然后重启 Docker 服务。
这样一来,问题就成功解决啦!
希望通过这个经验分享,大家在使用 Docker 和 K3S 时能够更顺利,如果遇到类似问题,不妨试试我的方法哦!