解决k8s部署时无法拉取镜像以及使用containerd导入本地镜像问题

发布网友 发布时间:2024-12-16 01:52

我来回答

1个回答

热心网友 时间:2024-12-16 08:17

在进行Kubernetes(K8s)应用部署时,有时会遇到镜像无法拉取的问题,这通常与网络环境有关。解决这类问题的一种方法是,找到在dockerhub上已被他人成功拉取并上传的相同镜像,然后将该镜像拉取至本地并修改其标签,以适应本地环境。


推荐使用名为myifeng/mirror-porter的GitHub仓库(github.com)作为国外Docker镜像的搬运工,该工具能够将国外镜像秒速搬运至国内,便于访问。操作流程包括:




确定所需镜像,例如registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.12.0。




使用mirror-porter工具将镜像拉取至本地。




修改镜像标签,以适应本地环境。




如需,删除原有标签以避免混淆。




确保在所有K8s节点上已准备好该镜像。




在完成以上步骤后,本地已具备所需镜像,此时在容器配置文件(如prometheusAdapter-deployment.yaml)中设置镜像拉取方式为`imagePullPolicy: IfNotPresent`,以确保在本地无镜像时自动从远程仓库拉取。


在Kubernetes迁移至containerd作为容器运行时后,由于Docker镜像与Containerd镜像存在不兼容性问题,可能会遇到类似无法拉取镜像的困境。此时,解决方法是将Docker镜像转换为Containerd镜像,具体步骤如下:




将Docker镜像导入至K8S使用的containerd默认命名空间k8s.io,确保containerd能够正确识别并使用该镜像。




导入镜像后,进行验证以确认导入成功。




通过scp将镜像的tar文件发送至所有K8s节点,并在所有节点执行上述导入步骤。




最后,确认容器配置文件(如prometheusAdapter-deployment.yaml)中已将`imagePullPolicy`设置为`IfNotPresent`或`Never`,以确保在节点上无镜像时自动拉取。




参考资源:K8S Containerd导入Docker image镜像_containerd导入docker镜像-CSDN博客

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com