docker - K8S 无法从本地仓库拉取镜像
问题描述
我的 docker 存储库中有一个图像。我试图从中创建 POD,但 K8S 给出以下错误。
无法拉取图像“cloudanswer:latest”:rpc 错误:代码 = 未知 desc = 获取https://registry-1.docker.io/v2/:net/http:请求在等待连接时取消(Client.Timeout 超过而等待标题)
似乎 K8S 正在连接到https://registry-1.docker.io/v2/而不是从本地 docker 存储库中获取。
如何使 K8S 为本地 docker 存储库拍摄图像?
解决方案
如果您在集群中使用单个节点,请确保此 docker 映像在此节点上可用。您可以通过
docker image ls
也设置imagePullPolicy
为Never
,否则 Kubernetes 会尝试下载镜像。
多节点集群,可以使用docker注册镜像。使用本地注册表:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
现在正确标记您的图像:
docker tag ubuntu <dns-name-of-machine>:5000/ubuntu
运行注册表容器的机器的dns 名称应该可以被网络中的所有节点访问
现在将您的图像推送到本地注册表:
docker push <dns-name-of-machine>:5000/ubuntu
你应该能够把它拉回来:
docker pull <dns-name-of-machine>:5000/ubuntu
现在更改您的 yaml 文件以使用本地注册表。
推荐阅读
- html - 视差滚动的背景图片不透明度
- php - laravel 广播 - 客户端多次收到一个响应
- jenkins - 詹金斯流水线程序
- hash - SAS 哈希表合并错误 --> 键不匹配
- reactjs - 如何在 React 组件中使用的对象属性中使用自定义字体特殊符号
- c# - 使用 Asp.Net MVC 下载 XML 文件
- c++ - C++中的灰度图像处理
- angular - 如何避免表单字段的重复和表单角度应用程序的验证?
- javascript - Vuejs 将现有的匿名对象分配给 data 属性中的一个属性
- angular - Angular 5 ng-pick-datetime 不可点击/工作