• OpenShift image registry 概述



    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。

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


    芝兰生于空谷,不以无人而不芳。
  • 相关阅读:
    Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
    基于visual Studio2013解决算法导论之002归并排序
    基于visual Studio2013解决算法导论之001插入排序
    android用户界面之ScrollView教程实例汇总
    android ScrollView--Linearlayout可以上下拖动
    在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
    Windows Azure 网站 (WAWS) 和中间证书
    Windows Azure 社区新闻综述(#78 版)
    通过 HTTPS 和 SSL 确保 Windows Azure 网站 (WAWS) 安全
    盘点:#AzureChat
  • 原文地址:https://www.cnblogs.com/xingzheanan/p/15706529.html
Copyright © 2020-2023  润新知