0. 前言

docker 镜像管理之 overlay2 最佳实践 中介绍了 image 的底层逻辑联合文件系统和分层结构。

image 存储在 registry 中,对于不同平台使用 registry 的策略有所区别。本文基于 RedHat 的 OpenShift 平台,对 registry 做概述。大致介绍 openshift registry 的框架,详细了解可以参考:OpenShift Container Platform 4.9 Documentation

1. OpenShift image 实践

在 OpenShfit(OCP,Openshift Container Platform) 集群外执行 kubectl get route 以获取 openshift-image-registry namespace 下的 route:

[root@chunqiu ~]# kubectl get route -n openshift-image-registry --kubeconfig config
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
default-route default-route-openshift-image-registry.apps image-registry <all> reencrypt None

其中,kubeconfig 选项的参数指定要访问的 OCP 集群,通过该配置完成集群的认证,鉴权。这里是在远端执行的访问操作,所以 kubeconfig 是需要的。

为什么查看 image registry 需要先看路由呢?接着往下看:

[root@chunqiu ~]# kubectl describe route default-route -n openshift-image-registry --kubeconfig config
Name: default-route
Namespace: openshift-image-registry
Kind: Route
Spec:
Host: default-route-openshift-image-registry.apps
Tls:
Termination: reencrypt
To:
Kind: Service
Name: image-registry
Weight: 100
Wildcard Policy: None
Status:
Ingress:
Conditions:
Last Transition Time: 2021-09-18T02:16:01Z
Status: True
Type: Admitted
Host: default-route-openshift-image-registry.apps
Router Canonical Hostname: router-default.apps
Router Name: default
...

route 路由定义了在集群外访问 Host default-route-openshift-image-registry.apps 的流量会转到 image-registry service。

OpenShift 为什么需要 Router 和 Route 详细介绍了 route, 关于 route 的理解可看这里

继续查看 service 绑定的 endpoint 是哪个 pod 的:

[root@chunqiu ~]# kubectl get service  -n openshift-image-registry --kubeconfig config
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
image-registry ClusterIP 172.30.0.1 <none> 5000/TCP 91d
image-registry-operator ClusterIP None <none> 60000/TCP 95d [root@chunqiu ~]# kubectl describe service image-registry -n openshift-image-registry --kubeconfig config
Name: image-registry
Namespace: openshift-image-registry Type: ClusterIP
IP: 172.30.0.1
Port: 5000-tcp 5000/TCP
TargetPort: 5000/TCP
Endpoints: 10.128.2.1:5000 [root@chunqiu ~]# kubectl get pods -n openshift-image-registry --kubeconfig config -o wide | grep image-registry
cluster-image-registry-operator-6d456994f-djnnl 1/1 Running 12 17d 10.128.0.25 hzngdc-rm17-e1-02-master-00
image-registry-6849cd4476-47kq4 1/1 Running 0 16d 10.128.2.1 hzngdc-rm17-e1-02-worker-13

可以看出,service 绑定的 Endpoint 是 pod image-registry-6849cd4476-47kq4 的 ip 地址,提供 registry 服务的实际上是该 pod。那么 push 的 image 又被存在哪里呢?查看该 pod 的描述:

[root@chunqiu ~]# kubectl describe pods image-registry-6849cd4476-47kq4 -n openshift-image-registry --kubeconfig config
Name: image-registry-6849cd4476-47kq4
Namespace: openshift-image-registry
Volumes:
registry-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: registry-storage
ReadOnly: false [root@chunqiu ~]# kubectl get pvc -n openshift-image-registry --kubeconfig config
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
registry-storage Bound pvc-03631962-4b9e-4913-a505-d732b9378157 120Gi RWO ocs-storagecluster-ceph-rbd 91d

从描述可以看出,提供 image registry 的服务绑定到 pvc registry-storage 上,该 pvc 的容量为 120Gi,push 的 image 将存储在这个 pvc。

至此,基本上这个框架已经清楚了,给出简易流程图如下:


OpenShift image registry 概述的更多相关文章

  1. Openshift创建Router和Registry

    Openshift创建Router和Registry: [root@DockerServer openshift]# oadm policy add-scc-to-user privileged sy ...

  2. 001.OpenShift介绍

    一 OpenShift特性 1.1 OpenShift概述 Red Hat OpenShijft Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT ...

  3. 002.OpenShift安装与部署

    一 前置条件说明 1.1 安装准备概述 Red Hat OpenShift容器平台是由Red Hat作为RPM包和容器映像两种类型存在.RPM包使用订阅管理器从标准Red Hat存储库(即Yum存储库 ...

  4. OpenShift应用镜像构建(1) S2I tomcat 镜像定制

    参考并感谢https://www.jianshu.com/p/fd3e62263046 在对接项目制作应用镜像的过程中,经常发现避免不了的是需要写Dockerfile,(当然另外一种方式是直接run一 ...

  5. Docker Private Registry 常用组件

    Docker Private Registry 常用组件 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Registry概述 1>.什么是registry ...

  6. Openshift与Kubernetes的区别

    Openshift与Kubernetes的区别 Openshift首个支持企业级 Java 的 PaaS 平台,支持 JEE6 与 JBoss 和其 Eclipse 集成开发环境以及 Maven 和 ...

  7. CDK安装

    1.下载cdk https://developers.redhat.com/products/cdk/download/ 2.在mac OS上更名并加入目录 $ mkdir -p ~/bin $ cp ...

  8. docker 搭建私有 docker hub

    查找registry 镜像 meiya@meiya:/etc/docker$ clear meiya@meiya:/etc/docker$ docker search registry NAME DE ...

  9. Docker 官网文档翻译汇总

    官方文档地址 Guide Docker 入门 Docker 入门教程 方向和设置 容器 服务 swarm 集群 stack 部署应用 概述 用 Docker 进行开发 在 Docker 上开发应用 应 ...

  10. OpenShift实战(三):OpenShift持久化存储Registry

    1.查看Registry组件的DC关于volume的定义 可以看到registry-storage这个挂载点被指向了一个/registry目录,使用的是empty directory,即数据保存在计算 ...

随机推荐

  1. jenkins pipeline语法、自动生成、部署案例

    Jenkins Pipeline是一套插件,支持在Jenkins中实现持续集成和持续交付: pipeline的编写都要写入到一个名为Jenkinsfile的文件中. 流水线脚本管理 Jenkinsfi ...

  2. Vue学习笔记-快速入门

    整体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  3. Python——第二章:字符串操作——格式化

    1. 字符串的格式化问题 举例:要按照如下格式输出一句话 我叫xxx, 我住在xxxx, 我今年xx岁, 我喜欢做xxxxx 这里首先引入占位符概念: %s 占位字符串%d 占位整数%f 占位小数 因 ...

  4. P2343 宝石管理系统 做题记录

    随机跳的. 一眼带修第 \(\text{k}\) 大,平衡树 / 权值线段树 / set 随便搞就行. (set 可能要双 \(\log\),所以没写) 很快啊,权值线段树就 \(\text{A}\) ...

  5. flutter弹窗

    AlertDialog: 优点:Material风格的弹窗,具有灵活的布局和样式自定义能力.易于使用,并提供了标题.内容和操作按钮的选项. 缺点:对于复杂的自定义布局和样式可能不够灵活. Bottom ...

  6. Spring系列:基于Spring-Jdbc实现事务

    目录 一.事务基本概念 二.编程式事务 三.声明式事务 前期准备 四.基于注解的声明式事务 @Transactional注解标识的位置 事务属性:只读 事务属性:超时 事务属性:回滚策略 事务属性:隔 ...

  7. C++篇:第十四章_编程_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 十四.编程 (一)概念 系统函数及其库是 C++语言所必须的,预处理命令不是 C ...

  8. 聊聊GaussDB AP是如何执行SQL的

    本文分享自华为云社区<GaussDB AP是如何执行SQL的>,作者:yd_270088468. 前言 介绍GaussDB AP各组件是如何协调工作的,会着重介绍SQL引擎. 1.SQL引 ...

  9. 掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

    本文分享自华为云社区<掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆>,作者:GaussDB 数据库 . 近日,在华为开发者大会2023(Cloud)的"G ...

  10. 从相识到相惜:Redis与计算存储分离四部曲

    摘要:协议兼容问题.性能问题.数据备份问题.数据容量问题--这些都是数据库在使用过程中必然会遇见的问题.就好比选择结婚对象,你需要去对比不同的方面,最后选出最好的.最合适的. 近期全国两会正在轰轰烈烈 ...