• DO280私有仓库持久存储与章节实验


    🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
    📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
    💬格言:努力不一定成功,但要想成功就必须努力🔥

    🎈支持我:可点赞👍、可收藏⭐️、可留言📝

    📜私有仓库持久存储

    📑创建私有仓库持久卷

    OCP内部仓库是source-to-image(S2I)流程的一个重要组件,该流程用于从应用程序源代码创建pod。S2I流程的最终输出是一个容器image,它被推送到OCP内部仓库,然后可以用于部署。

    在生产环境中,通常建议为内部仓库提供一个持久性存储。否则,在重新创建registry pod之后,S2I创建的pod可能无法启动。例如,在master节点重新启动之后。

    OpenShift安装程序配置并启动一个默认的持久仓库,该仓库使用NFS共享,由Inventory文件中的openshift_hosted_registry_storage_*变量定义。在生产环境中,Red Hat建议由外部专用的存储提供持久性存储,该服务器配置为弹性和高可用性。

    高级安装程序将NFS服务器配置为使用外部NFS服务器上的持久存储,在[NFS]字段中定义的一个NFS服务器的列表。该服务器与openshift_hosted_registry_storage*变量一起使用,以配置NFS服务器。

    示例配置:

    [OSEv3:vars]
    openshift_hosted_registry_storage_kind=nfs		#定义OCP存储后端
    openshift_hosted_registry_storage_access_modes=['ReadWriteMany']	#定义访问模式,默认为ReadWriteMany,表示允许多个节点以读写形式挂载
    openshift_hosted_registry_storage_nfs_directory=/exports		#定义NFS服务器上的NFS存储目录
    openshift_hosted_registry_storage_nfs_options='*(rw,root_squash)'	#定义存储卷的NFS选项。这些选项被添加到/etc/ exports.d/openshift-ansible.exports中。rw选项允许对NFS卷进行读写访问,root_squash选项阻止远程连接的根用户拥有root特权,并为nfsnobody分配用户ID
    openshift_hosted_registry_storage_volume_name=registry		#定义要用于持久仓库的NFS目录的名称
    openshift_hosted_registry_storage_volume_size=40Gi			#定义持久卷大小
    ... output omitted ...
    [nfs]
    services.lab.example.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在为持久仓库安装和配置存储之后,OpenShift在OpenShift项目中创建一个名为register-volume的持久卷。持久性卷的容量为40gb,并且根据定义设置了Retain策略。同时默认项目中的pvc调用pv。

    [student@workstation ~]$ oc describe pv registry-volume
    Name:            registry-volume	   #定义持久卷名
    Labels:          <none>
    Annotations:     pv.kubernetes.io/bound-by-controller=yes
    StorageClass:
    Status:          Bound
    Claim:           default/registry-claim  #定义使用持久卷的声明
    Reclaim Policy:  Retain			       #默认持久卷策略,具有Retain策略的卷在从其声明中释放后不会被擦除
    Access Modes:    RWX			       #定义持久卷的访问模式,由Ansible inventory文件的openshift_hosted_registry_storage_access_modes=['ReadWriteMany']变量定义
    Capacity:        40Gi			       #定义持久卷的大小,由Ansible inventory文件的openshift_hosted_registry_storage_volume_size变量定义
    Message:
    Source:					            #定义存储后端的位置和NFS共享
        Type:      NFS (an NFS mount that lasts the lifetime of a pod)
        Server:    services.lab.example.com
        Path:      /exports/registry
        ReadOnly:  false
    Events:        <none>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    运行以下命令,确认OpenShift内部仓库已配置registry-volume作为默认的PersistentVolumeClaim。

    [user@demo ~] oc describe dc/docker-registry | grep -A4 Volumes
      Volumes:
       registry-storage:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  registry-claim
        ReadOnly:   false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    OCP内部仓库将image和metadata存储为普通文件和文件夹,这意味着可以检查PV源存储,查看仓库是否向其写入了文件。

    在生产环境中,这是通过访问外部NFS服务器来完成的。但是,在本环境中,NFS共享是在services的VM上配置的,因此ssh至services查看,以便于验证OCP内部仓库成功将image存储到持久存储中。

    示例:一个名为hello的应用程序在default命名空间中运行,下面的命令验证图像是否存储在持久存储中。

    [user@demo ~] ssh root@master ls -l \
    /var/export/registryvol/docker/registry/v2/repositories/default/
    
    • 1
    • 2

    📜章节实验

    📑环境准备

    [student@workstation ~]$ lab install-prepare setup
    [student@workstation ~]$ cd /home/student/do280-ansible
    [student@workstation do280-ansible]$ ./install.sh
    
    • 1
    • 2
    • 3

    提示:若已经拥有一个完整环境,可不执行


    📑本练习准备

    [student@workstation ~]$ lab storage-review setup
    
    • 1

    📑配置NFS

    本实验不详解NFS的配置和创建,直接使用/root/DO280/labs/deploy-volume/config-nfs.sh脚本实现,具体脚本内容可通过以下方式查看。

    同时NFS由services节点提供。

    [root@services ~]# less -FiX /root/DO280/labs/storage-review/config-review-nfs.sh
    [root@services ~]# /root/DO280/labs/storage-review/config-review-nfs.sh      #创建NFS
    [root@services ~]# showmount -e							               #确认验证
    Export list for services.lab.example.com:
    /var/export/dbvol                *
    /var/export/review-dbvol         *
    /exports/prometheus-alertbuffer  *
    /exports/prometheus-alertmanager *
    /exports/prometheus              *
    /exports/etcd-vol2               *
    /exports/logging-es-ops          *
    /exports/logging-es              *
    /exports/metrics                 *
    /exports/registry                *
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    📑创建持久卷

    [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.example.com
    [student@workstation ~]$ less -FiX /home/student/DO280/labs/storage-review/review-volume-pv.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: review-pv
    spec:
      capacity:
        storage: 3Gi
      accessModes:
      - ReadWriteMany
      nfs:
        path: /var/export/review-dbvol
        server: services.lab.example.com
      persistentVolumeReclaimPolicy: Recycle
    [student@workstation ~]$ oc create -f /home/student/DO280/labs/storage-review/review-volume-pv.yaml
    [student@workstation ~]$ oc get pv		#查看PV
    NAME               CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                   STORAGECLASS   REASON    AGE
    etcd-vol2-volume   1G         RWO            Retain           Bound       openshift-ansible-service-broker/etcd                            6d
    registry-volume    40Gi       RWX            Retain           Bound       default/registry-claim                                           6d
    review-pv          3Gi        RWX            Recycle          Available                                                                    5s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    📑部署模板

    [student@workstation ~]$ less -FiX /home/student/DO280/labs/storage-review/instructor-template.yaml
    [student@workstation ~]$ oc create -n openshift -f /home/student/DO280/labs/storage-review/instructor-template.yaml
    #使用模板创建应用至openshift namespace中
    
    • 1
    • 2
    • 3

    📑创建项目

    [student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com
    [student@workstation ~]$ oc new-project instructor
    
    • 1
    • 2

    📑web部署应用

    浏览器访问: https://master.lab.example.com

    在这里插入图片描述

    选择Catalog

    在这里插入图片描述

    选择PHP,并使用instructor-template。

    在这里插入图片描述

    设置Application Hostname,然后直接下一步,模板会创建一个数据库服务器。

    在这里插入图片描述

    单击Continue to project overview以监视应用程序的构建过程。从提供的服务框架中,单击instructor。单击部署配置#1条目旁边的下拉箭头,打开部署面板。当构建完成时,build部分的Complete旁边应该出现一个绿色的复选标记。

    在这里插入图片描述

    在这里插入图片描述


    📑端口转发

    [student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com
    [student@workstation ~]$ oc get pod
    NAME                 READY     STATUS      RESTARTS   AGE
    instructor-1-build   0/1       Completed   0          15m
    instructor-1-zqtwp   1/1       Running     0          14m
    mysql-1-2k8kb        1/1       Running     0          15m 
    [student@workstation ~]$ oc port-forward mysql-1-2k8kb 3306:3306
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    📑填充数据库

    [student@workstation ~]$ mysql -h127.0.0.1 -u instructor -ppassword \
    instructor < /home/student/DO280/labs/storage-review/instructor.sql
    [student@workstation ~]$ mysql -h127.0.0.1 -u instructor -ppassword instructor -e "select * from instructors;"	
    +------------------+-----------------+--------------------------------+----------------+-------+------------+---------------+
    | instructorNumber | instructorName  | email                          | city           | state | postalCode | country       |
    +------------------+-----------------+--------------------------------+----------------+-------+------------+---------------+
    |              103 | DemoUser1       | duser1@workstation.example.com | Raleigh        | NC    | 27601      | United States |
    |              112 | InstructorUser1 | iuser1@workstation.example.com | Rio de Janeiro | RJ    | 22021-000  | Brasil        |
    |              114 | InstructorUser2 | iuser2@workstation.example.com | Raleigh        | NC    | 27605      | United States |
    |              123 | InstructorUser3 | iuser3@workstation.example.com | Sao Paulo      | SP    | 01310-000  | Brasil        |
    +------------------+-----------------+--------------------------------+----------------+-------+------------+---------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    📑测试访问

    在这里插入图片描述

    workstations的浏览器访问:http://instructor.apps.lab.example.com


    📑测试添加数据

    在这里插入图片描述
    在这里插入图片描述


    📑确认验证

    [student@workstation ~]$ lab storage-review grade		#环境脚本判断实验
    
    • 1

    📑清除实验

    [student@workstation ~]$ oc login -uadmin -predhat
    [student@workstation ~]$ oc delete project instructor
    [student@workstation ~]$ oc delete pv review-pv
    [student@workstation ~]$ ssh root@services
    [root@services ~]# rm -rf /var/export/review-dbvol
    [root@services ~]# rm -f /etc/exports.d/review-dbvol.exports
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    💡总结

    • Red Hat OpenShift容器平台使用PersistentVolumes (PVs)为pods提供持久存储。
    • OpenShift项目使用PersistentVolumeClaim (PVC)资源来请求将PV分配给项目。
    • OpenShift安装程序配置并启动一个默认仓库,它使用从OpenShift主程序导出的NFS共享。
    • 一组Ansible变量允许为OpenShift默认仓库配置一个外部NFS存储。这将创建一个持久卷和一个持久卷声明。

    RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

    以上就是【金鱼哥】对 第六章 DO280私有仓库持久存储与章节实验 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

    💾红帽认证专栏系列:
    RHCSA专栏:戏说 RHCSA 认证
    RHCE专栏:戏说 RHCE 认证
    此文章收录在RHCA专栏:RHCA 回忆录

    如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

    如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

  • 相关阅读:
    ElasticSearch安装-Windows篇
    智能合同和TikTok:揭示加密技术的前景
    微服务项目:尚融宝(41)(核心业务流程:借款额度审批)
    【考研数学】概率论与数理统计 —— 第六章 | 数理统计基本概念(2,三个重要的抽样分布)
    Linux CentOS7.6 Docker部署Harbor(附 Github 文件加速下载)
    UE4 回合游戏项目 11- 添加人物攻击动画
    SQL语言---数据更新
    一文1500字从0到1搭建 Jenkins 自动化测试平台
    Allegro Design Entry HDL(OrCAD Capture HDL)连线管理菜单详细介绍
    Mysql高级20-性能分析
  • 原文地址:https://blog.csdn.net/qq_41765918/article/details/125421644