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. Mybatis大于、小于....转义写法

    描述 转义前 转义后 大于 > > 大于等于 >= >= 小于 < < 小于等于 <= <= 和 & & 单引号 ' &apos ...

  2. MD5在文件安全中的应用与重要性

    一.MD5简介 MD5(Message-Digest Algorithm 5)是一种广泛应用的密码散列函数,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)于1992年提出.它主 ...

  3. 2023计算机保研经验贴 直博向(南大cs,计算所,科大高研院,浙大cs,交大cs,国科cs,北大cs,清华cs)

    写在前面 本人作为普通选手,只能将个人经验分享一二,不能代表其他人的想法和意见,望路过的大佬们高抬贵手-,如果有相关老师或者同学认为我违反了保密条例请与我私信联系,我会第一时间删除相关内容. 个人情况 ...

  4. MySQL运维15-一主一从读写分离

    一.读写分离介绍 读写分离,是把数据库的读和写分开操作,以应对不同的数据库服务器.主数据库提供写操作,从数据库提供读操作,这样能有效的减轻单台数据库的压力. 二.一主一从原理 MySQL的主从复制是基 ...

  5. Pikachu漏洞靶场 Unsafe Fileupload(文件上传)

    Unsafe Fileupload 文章目录 Unsafe Fileupload 1.client check 2.MIME type 3.getimagesize 1.client check 标题 ...

  6. 用C#实现简单的线性回归

    前言 最近注意到了NumSharp,想学习一下,最好的学习方式就是去实践,因此从github上找了一个用python实现的简单线性回归代码,然后基于NumSharp用C#进行了改写. NumSharp ...

  7. 2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = “cba

    2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次. 需保证 返回结果的字典序最小. 要求不能打乱其他字符的相对位置). 输入:s = &quo ...

  8. HDU 4705 立方和拆解

    HDU 4705 立方和拆解 题意 给一棵树,找出所有的(A,B,C)三元组的数量,满足ABC不能同时被一条路径覆盖 思路 首先可以明确的是,对于每个入度大于等于3的点(也就是有两个或以上儿子的节点) ...

  9. 神经网络入门篇:直观理解反向传播(Backpropagation intuition)

    详细推导反向传播 下图是逻辑回归的推导: 回想一下逻辑回归的公式(参考公式1.2.公式1.5.公式1.6.公式1.15) 公式1.38: \[\left. \begin{array}{l} {x }\ ...

  10. 规模化敏捷框架何从入手?这篇文章把SAFe讲透了!

    摘要:敏捷软件开发理念已渐渐被业界普遍接受,越来越多的公司和团队不得不面对一个新的问题,就是规模化敏捷的引入和实现.目前市场上规模化框架主要有SAFe,Less,Scrum of Scrums, Sp ...