OpenShift image registry 访问镜像
1. OpenShift 内部 image registry
Openshift 自带内部 image registry,可通过 podman 实现 image 的 pull 和 push 操作。
对不同操作,需要给用户指定相应的 role:
// podman pull
oc policy add-role-to-user registry-viewer <user_name>
// podman push
oc policy add-role-to-user registry-editor <user_name>
使用用户名 + token 的方式 login 内部 image registry:
$ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false image-registry.openshift-image-registry.svc:5000
Login Succeeded!
通过 podman pull 拉取远端 registy image(这里直接拉取的内部 registry image):
$ podman pull image-registry.openshift-image-registry.svc:5000/default/xxx:0.4.1
podman images 查看是否拉取 image 到本地:
$ podman images | grep default/lcmaas-engine
image-registry.openshift-image-registry.svc:5000/default/xxx 0.4.1 f7b265fd6c39 3 weeks ago 64.9 MB
对本地的 image 打 tag 并且 push 到内部 image registry:
$ podman tag image-registry.openshift-image-registry.svc:5000/default/xxx:0.4.1 image-registry.openshift-image-registry.svc:5000/luban/xxx:0.4.1
$ podman push image-registry.openshift-image-registry.svc:5000/luban/xxx:0.4.1
注意 podman images 看不到内部 image registry 存储的 image,查看内部 image registry 存储的 image 可通过 curl registry url 的方式查看:
$ curl -s -k -H "Authorization: Bearer $(oc whoami -t)" https://image-registry.openshift-image-registry.svc:5000/v2/_catalog | jq
$ env | grep http
https_proxy=http://10.158.xxx.xxx:8080/
http_proxy=http://10.158.xxx.xxx:8080/
$ unset https_proxy
$ unset http_proxy
$ curl -s -k -H "Authorization: Bearer $(oc whoami -t)" https://image-registry.openshift-image-registry.svc:5000/v2/_catalog | jq
{
"repositories": [
"luban/xxx1",
"luban/xxx2",
...
这里要注意 curl 访问的是本地内部image registry 不需要走代理,如果设置了代理的话需要取消代理。
2. OpenShift 内部 insecure image registry
上节介绍的 image registry 是内部 secure 的,当访问内部 insecure image registry 时会报错 x509: certificate signed by unknown authority
:
$ podman pull default-route-openshift-image-registry.apps.xxx.net/default/xxx-0.4.1:latest
Trying to pull default-route-openshift-image-registry.apps.xxx.net/default/xxx-0.4.1:latest...
Error: Error initializing source docker://default-route-openshift-image-registry.apps.xxx.net/default/xxx-0.4.1:latest:
error pinging docker registry default-route-openshift-image-registry.xxx.net:
Get "https://default-route-openshift-image-registry.apps.xxx.net/v2/": x509: certificate signed by unknown authority
解决方法可以从两个角度入手:
- 将 image registry 置为 secure。
- 忽视 insecure 的证书检查。
这里实践了第二种将 registry 配成 insecure 。
在 /etc/containers/registries.conf 文件下,添加如下 registry field:
[[registry]]
location = "default-route-openshift-image-registry.apps.xxx.net"
insecure = true
表示 location 定义的 registry 允许不安全的 HTTP 拉取。
详细解释可看 Podman添加私有镜像源配置 registries.conf
继续执行 podman pull insecure image registry:
$ podman pull default-route-openshift-image-registry.apps.xxx.net/default/xxx:0.4.1
Trying to pull default-route-openshift-image-registry.apps.xxx.net/default/xxx:0.4.1...
Getting image source signatures
Copying blob 298d29d50a74 [--------------------------------------] 0.0b / 0.0b
Copying config f7b265fd6c done
Writing manifest to image destination
Storing signatures
f7b265fd6c39b522c6c606eb49a124def7ff8bce8560ba83dfc83982eac00d53
拉取成功!
使用 kubernetes 部署 pod 并且指定 insecure image registry 看是否能拉取成功:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Failed 5m48s (x6 over 7m5s) kubelet Error: ImagePullBackOff
Normal Pulling 5m35s (x4 over 7m6s) kubelet Pulling image "default-route-openshift-image-registry.apps.xxx.net/default/xxx:0.250.3554"
Warning Failed 5m35s (x4 over 7m6s) kubelet Failed to pull image "default-route-openshift-image-registry.apps.xxx.net/default/xxx:0.250.3554": rpc error: code = Unknown desc = pinging container registry default-route-openshift-image-registry.apps.xxx.net: Get "https://default-route-openshift-image-registry.apps.xxx.net/v2/": x509: certificate signed by unknown authority
Warning Failed 5m35s (x4 over 7m6s) kubelet Error: ErrImagePull
Normal BackOff 114s (x22 over 7m5s) kubelet Back-off pulling image "default-route-openshift-image-registry.apps.xxx.net/default/xxx:0.250.3554"
还是报 x509: certificate signed by unknown authority
错误。
猜测 containerd(OpenShift 安装的 containerd 是 oci-o) 在 pull image 时报错,解决方式应该是类似的,在 containerd 的配置文件中添加 insecure registry。这里就不继续实践了。
3. 参考文章
- Trouble with insecure_registries
- https://docs.docker.com/registry/insecure/
- Failed to pull image with "x509: certificate signed by unknown authority" error
- Accessing the registry
- 向OpenShift内部Image Registry推送Image
OpenShift image registry 访问镜像的更多相关文章
- Docker Registry 管理镜像
一.使用Docker Registry管理镜像 a.登陆docker hub https://www.docker.com/products/docker-hub b.创建仓库 c.推送镜像 打 ...
- 6.云原生之Docker容器Registry私有镜像仓库搭建实践
转载自:https://www.bilibili.com/read/cv15219863/?from=readlist #1.下载registry仓库并设置数据存放的目录(并生成认证账号密码) doc ...
- openshift pod对外访问网络解析
openshift封装了k8s,在网络上结合ovs实现了多租户隔离,对外提供服务时报文需要经过ovs的tun0接口.下面就如何通过tun0访问pod(172.30.0.0/16)进行解析(下图来自理解 ...
- registry --------->仓库 ----------------->镜像
registry --------->仓库 ----------------->镜像 本地镜像都保存在宿主机下 : /var/lib/docker/containers 镜像从仓库下载下来 ...
- 搭建docker registry私有镜像仓库
搭建docker registry私有镜像仓库 一.安装docker-distribution yum install -y docker-distribution 安装完成后,启动服务: syste ...
- docker(五) 使用Docker Registry搭建镜像私服
1.创建私服 docker run -d --name registry -v /opt/data/registry:/var/lib/registry -p 5000:5000 registry - ...
- Docker部署Registry私有镜像库
拉取镜像 docker pull registry:2.6.2 生成账号密码文件,这里采用htpasswd方式认证 docker run --rm --entrypoint htpasswd re ...
- docker私服registry管理镜像
前言 首先试想这样一个场景:当在自己的机器上(docker中)构建了mysql镜像,eureka镜像等等微服务镜像,这些镜像有可能需要放到其他的机器上docker环境中去运行,实行分布式架构部署.但如 ...
- 使用 Azure Container Registry 储存镜像
Azure Container Registry(容器注册表)是基于 Docker Registry 2.0规范的托管专用 Docker 注册表服务. 可以创建和维护 Azure 容器注册表来存储与管 ...
- Mirror--程序访问镜像数据库的超时机制
程序在访问有镜像的数据库和无镜像的数据库时,采用的链接超时时间算法不一样,因此会导致在在有镜像的数据库上设置了15 S的超时时间,而实际的超时时间仅为3.6 S,从而导致有镜像的数据库更容易超时. 在 ...
随机推荐
- 香橙派5plus从ssd启动Ubuntu
官方接口图 我实际会用到的就几个接口,背面的话就一个M.2固态的位置: 其中WIFI模块的接口应该也可以插2230的固态,不过是pcie2.0的速度,背面的接口则是pcie3.0*4的速度,差距还是挺 ...
- WeLM微信自研NLP大规模语言模型
2022年9月份微信AI推出自研NLP大规模语言模型WeLM ,该模型是一个尺寸合理的中文模型,能够在零样本以及少样本的情境下完成包多语言任务在内的多种NLP任务.openai的chatgpt是在20 ...
- 当创建一个ingress后,kubernetes会发什么?
本文分享自华为云社区<当创建一个ingress后,kubernetes会发什么?>,作者:可以交个朋友. 一.Ingress概述 Ingress是一组路由转发规则合集,将集群内部服务通过7 ...
- 非工程师指南: 训练 LLaMA 2 聊天机器人
引言 本教程将向你展示在不编写一行代码的情况下,如何构建自己的开源 ChatGPT,这样人人都能构建自己的聊天模型.我们将以 LLaMA 2 基础模型为例,在开源指令数据集上针对聊天场景对其进行微调, ...
- Java播放MP3播放音频
Java播放MP3播放音频 下面我演示用jdk自带包.框架等分别展示播放mp3.等music 一.使用javafx包 AudioClip 注意jdk11以上剥离了javafx public stati ...
- 微信小程序实时噪声分贝
为了做一个能够检测实时噪声分贝的小程序,网上找了很多例子,基本没有完整的代码,手写了一个,话不多说直接上效果图 实现实时录音的功能,并且能够根据声音分贝大小转动仪表盘显示实时的分贝,运用echart实 ...
- 技术实践丨PostgreSQL插件之pg_dirtyread "闪回查询"
摘要:Oracle数据库有时候不小心删除掉数据,想查询这些数据,或者恢复数据,就可以使用带有as of子句的select语句进行闪回查询. PG粉有福了,下面介绍一种类似"闪回查询" ...
- Karmada v1.2发布:开启全文本搜索新纪元
摘要:Karmada v1.2 版本对调度器能力做了较大增强,初步提供了分布式搜索引擎支持,此外还借助聚合API提供了诸如 logs, watch等实用的命令行工具,资源解释器(Resource In ...
- 云图说丨每个成功的业务系统离不开API网关(APIG)的保驾护航
摘要:华为云API网关(APIG)是为企业开发者及合作伙伴提供的高性能.高可用.高安全的API托管服务, 帮助企业轻松构建.管理和部署不同规模的API. 本文分享自华为云社区<[云图说]第243 ...
- Scrum Master们,难道每天都在摸鱼?
摘要:众所周知,Scrum Master是服务型领导--其本身不参与日常的研发工作,写代码.改Bug的工作都让团队干了,Scrum Master到底干了啥?Scrum Master工作的好坏应该如何衡 ...