日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

006.OpenShift持久性存儲(chǔ)

 小仙女本仙人 2022-06-19 發(fā)布于北京

一 持久存儲(chǔ)

1.1 持久存儲(chǔ)概述

默認(rèn)情況下,運(yùn)行容器使用容器內(nèi)的臨時(shí)存儲(chǔ)。Pods由一個(gè)或多個(gè)容器組成,這些容器一起部署,共享相同的存儲(chǔ)和其他資源,可以在任何時(shí)候創(chuàng)建、啟動(dòng)、停止或銷毀。使用臨時(shí)存儲(chǔ)意味著,當(dāng)容器停止時(shí),寫入容器內(nèi)的文件系統(tǒng)的數(shù)據(jù)將丟失。
當(dāng)容器在停止時(shí)也需要持久的保存數(shù)據(jù)時(shí),OpenShift使用Kubernetes持久卷(PVs)為pod提供持久存儲(chǔ)。

1.2 持久存儲(chǔ)場景

通常用于數(shù)據(jù)庫,啟動(dòng)一個(gè)數(shù)據(jù)庫的pod時(shí)提供的默認(rèn)臨時(shí)存儲(chǔ)。如果銷毀并重新創(chuàng)建數(shù)據(jù)庫pod,則銷毀臨時(shí)存儲(chǔ)并丟失數(shù)據(jù)。如果使用持久存儲(chǔ),則數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)到pod外部的持久卷中。如果銷毀并重新創(chuàng)建pod,數(shù)據(jù)庫應(yīng)用程序?qū)⒗^續(xù)訪問存儲(chǔ)數(shù)據(jù)的相同外部存儲(chǔ)。

1.3 持久存儲(chǔ)相關(guān)概念

持久卷(PV)是OpenShift資源,它只由OpenShift管理員創(chuàng)建和銷毀。持久卷資源表示所有OpenShift節(jié)點(diǎn)都可以訪問的網(wǎng)絡(luò)連接存儲(chǔ)。
持久性存儲(chǔ)組件:
OCP使用Kubernetes持久卷(PV)技術(shù),允許管理員為集群提供持久性存儲(chǔ)。開發(fā)人員使用持久性卷聲明(PVC)請(qǐng)求PV資源,而不需要了解具體的底層存儲(chǔ)基礎(chǔ)設(shè)施。
Persistent Volume:PV是OpenShift集群中的資源,由PersistentVolume API對(duì)象定義,它表示集群中由管理員提供的現(xiàn)有網(wǎng)絡(luò)存儲(chǔ)的一部分。它是集群中的資源,就像節(jié)點(diǎn)是集群資源一樣。PV的生命周期獨(dú)立于使用PV的任何單獨(dú)pod。
Persistent Volume Claim:pvc由PersistentVolumeClaim API對(duì)象定義,該對(duì)象表示開發(fā)人員對(duì)存儲(chǔ)的請(qǐng)求。它與pod類似,pod消耗節(jié)點(diǎn)資源,而pvc消耗PV資源。

1.4 持久存儲(chǔ)插件

卷是掛載的文件系統(tǒng),對(duì)pods及其容器可用,并且可以由許多本地或網(wǎng)絡(luò)連接的存儲(chǔ)進(jìn)行備份。OpenShift使用插件來支持以下不同的后端用于持久存儲(chǔ):
  • NFS
  • GlusterFS
  • OpenStack Cinder
  • Ceph RBD
  • AWS Elastic Block Store (EBS)
  • GCE Persistent Disk
  • iSCSI
  • Fibre Channel
  • Azure Disk and Azure File
  • FlexVolume (allows for the extension of storage back-ends that do not have a built-in plug-in)
  • VMWare vSphere
  • Dynamic Provisioning and Creating Storage Classes
  • Volume Security
  • Selector-Label Volume Binding

1.5 PV訪問模式

PV可以以resource provider的任何方式掛載在主機(jī)上,provider具有不同的功能,并且每個(gè)持久卷的訪問模式都設(shè)置為該特定卷支持的特定模式。例如,NFS可以支持多個(gè)讀/寫客戶端,但是特定的NFS PV可以在服務(wù)器上作為只讀導(dǎo)出。
每個(gè)PV接收自己的一組訪問模式,描述特定的持久卷的功能。
訪問模式見下表:
訪問模式
CLI縮寫
描述
ReadWriteOnce
RWO
卷可以被單個(gè)節(jié)點(diǎn)掛載為讀/寫
ReadOnlyMany
ROX
卷可以由許多節(jié)點(diǎn)以只讀方式掛載
ReadWriteMany
RWX
卷可以被許多節(jié)點(diǎn)掛載為讀/寫
PV claims與具有類似訪問模式的卷匹配。唯一的兩個(gè)匹配標(biāo)準(zhǔn)是訪問模式和大小。claim的訪問模式表示請(qǐng)求。因此,可以授予用戶更大的訪問權(quán)限,但絕不能減少訪問權(quán)限。例如,如果一個(gè)claim請(qǐng)求RWO,但是惟一可用的卷是NFS PV (RWO+ROX+RWX),那么claim將匹配NFS,因?yàn)樗С諶WO。
所有具有相同模式的卷都被分組,然后按大小(從最小到最大)排序。
master上負(fù)責(zé)將PV綁定到PVC上的service接收具有匹配模式的組,并在每個(gè)組上迭代(按大小順序),直到一個(gè)大小匹配為止,然后將PV綁定到PVC上。

1.6 Persistent Volume Storage Classes

PV Claims可以通過在storageClassName屬性中指定它的名稱來選擇性地請(qǐng)求特定的存儲(chǔ)類。只有與PVC具有相同存儲(chǔ)類名稱的請(qǐng)求類的pv才能綁定到PVC。
集群管理員可以為所有PVC設(shè)置一個(gè)默認(rèn)存儲(chǔ)類,或者配置動(dòng)態(tài)供應(yīng)程序來服務(wù)一個(gè)或多個(gè)存儲(chǔ)類,這些存儲(chǔ)類將匹配可用PVC中的規(guī)范。

1.7 創(chuàng)建pv和PVC資源

pv是集群中的資源,pvc是對(duì)這些資源的請(qǐng)求,也充當(dāng)對(duì)資源的claim檢查。pv與PVCs的相互作用具有以下生命周期:
  • 創(chuàng)建持久卷
集群管理員創(chuàng)建任意數(shù)量的pv,這些pv表示集群用戶可以通過OpenShift API使用的實(shí)際存儲(chǔ)的信息。
  • 定義持久卷聲明
用戶創(chuàng)建具有特定存儲(chǔ)量、特定訪問模式和可選存儲(chǔ)類的PVC。master監(jiān)視新的pvc,要么找到匹配的PV,要么等待存儲(chǔ)類創(chuàng)建一個(gè)供應(yīng)程序,然后將它們綁定在一起。
  • 使用持久存儲(chǔ)
Pods使用claims作為卷。集群檢查查找綁定卷的聲明,并為pod綁定該卷。對(duì)于那些支持多種訪問模式的卷,用戶在將其聲明用作pod中的卷時(shí)指定需要哪種模式。
一旦用戶有了一個(gè)claim,并且該claim被綁定,綁定的PV就屬于用戶,使用過程中該P(yáng)V都屬于該用戶。用戶通過在pod的Volume中包含一個(gè)持久的卷claim來調(diào)度pod并訪問其聲明的pv。

1.8 使用NFS的PV

OpenShift使用隨機(jī)uid運(yùn)行容器,因此將Linux用戶從OpenShift節(jié)點(diǎn)映射到NFS服務(wù)器上的用戶并不能正常工作。作為OpenShift pv使用的NFS共享必須遵從如下配置:
  • 屬于nfsnobody用戶和組。
  • 擁有rwx------權(quán)限(即0700)。
  • 使用all_squash選項(xiàng)
示例配置:
/var/export/vol *(rw,async,all_squash)
其他NFS export選項(xiàng),例如sync和async,與OpenShift無關(guān)。如果使用任何一個(gè)選項(xiàng),OpenShift都可以工作。但是,在高延遲環(huán)境中,添加async選項(xiàng)可以加快NFS共享的寫操作(例如,將image push到倉庫的場景)。
使用async選項(xiàng)更快,因?yàn)镹FS服務(wù)器在處理請(qǐng)求時(shí)立即響應(yīng)客戶端,而不需要等待數(shù)據(jù)寫到磁盤。
當(dāng)使用sync選項(xiàng)時(shí),則相反,NFS服務(wù)器只在數(shù)據(jù)寫到磁盤之后才響應(yīng)客戶端。
注意:NFS共享文件系統(tǒng)大小和用戶配額對(duì)OpenShift沒有影響。PV大小在PV資源定義中指定。如果實(shí)際文件系統(tǒng)更小,則PV被創(chuàng)建并綁定。如果PV更大,OpenShift不會(huì)將使用的空間限制為指定的PV大小,并且允許容器使用文件系統(tǒng)上的所有空閑空間。OpenShift自身提供了存儲(chǔ)配額和存儲(chǔ)位置限制,可用于控制項(xiàng)目中的資源分配。
默認(rèn)的SELinux策略不允許容器訪問NFS共享。必須在每個(gè)OpenShift實(shí)例節(jié)點(diǎn)中更改策略,方法是將virt_use_nfs和virt_sandbox_use_nfs變量設(shè)置為true。
  1 # setsebool -P virt_use_nfs=true
  2 # setsebool -P virt_sandbox_use_nfs=true
 

1.9 NFS回收政策

NFS支持OpenShift的Recyclable插件,根據(jù)在每個(gè)持久卷上設(shè)置的策略處理自動(dòng)執(zhí)行回收任務(wù)。
默認(rèn)情況下,持久卷被設(shè)置為Retain。Retain reclaim策略允許手動(dòng)回收資源。當(dāng)刪除pv claim時(shí),持久卷仍然存在,并且認(rèn)為該卷已被釋放。但它還不能用于另一個(gè)claim,因?yàn)閬碜郧耙粋€(gè)claim的數(shù)據(jù)仍然保留在卷上。此時(shí)管理員可以手動(dòng)回收卷。
NFS卷及其回收策略設(shè)置為Recycle,表示在從claim中釋放后將被清除。例如,當(dāng)將NFS回收策略設(shè)置為Recycle后,在刪除用戶綁定到該卷的pv claim之后,會(huì)在該卷上運(yùn)行rm -rf命令。在它被回收之后,NFS卷可以直接綁定到一個(gè)新的pv claim。

1.10 Supplemental group

Supplemental group是常規(guī)的Linux組。當(dāng)一個(gè)進(jìn)程在Linux中運(yùn)行時(shí),它有一個(gè)UID、一個(gè)GID和一個(gè)或多個(gè)Supplemental group??梢詾槿萜鞯闹鬟M(jìn)程設(shè)置這些屬性。
Supplemental groupid通常用于控制對(duì)共享存儲(chǔ)的訪問,比如NFS和GlusterFS,而fsGroup用于控制對(duì)塊存儲(chǔ)(如Ceph的RBD活iSCSI)的訪問。
OpenShift共享存儲(chǔ)插件掛載卷,以便使掛載上的POSIX權(quán)限與目標(biāo)存儲(chǔ)上的權(quán)限匹配。例如,如果目標(biāo)存儲(chǔ)的所有者ID是1234,組ID是5678,那么宿主節(jié)點(diǎn)和容器中的掛載將具有相同的ID。因此,容器的主進(jìn)程必須匹配一個(gè)或兩個(gè)id,才能訪問該卷。
  1 [root@node ~]# showmount -e
  2 Export list for master.lab.:
  3 /var/export/nfs-demo *
  4 [root@services ~]# cat /etc/exports.d/nfs-demo.conf
  5 /var/export/nfs-demo
  6 ...
  7 [root@services ~]# ls -lZ /var/export -d
  8 drwx------. 10000000 650000 unconfined_u:object_r:usr_t:s0 /var/export/nfs-demo
 
圖上示例,UID 10000000和組650000可以訪問/var/export/nfs-demo export。通常,容器不應(yīng)該作為root用戶運(yùn)行。在這個(gè)NFS示例中,如果容器不是作為UID 10000000運(yùn)行的,并且不是組650000的成員,那么這些容器就不能訪問NFS export。

1.11 通過fsgroup使用塊存儲(chǔ)

fsGroup定義了pod的“file-system group”ID,該ID被添加到容器的supplemental group中。supplemental group ID應(yīng)用于共享存儲(chǔ),而fsGroup ID用于塊存儲(chǔ)。
塊存儲(chǔ),如Ceph RBD、iSCSI和各種類型的云存儲(chǔ),通常專用于單個(gè)pod。與共享存儲(chǔ)不同,塊存儲(chǔ)由pod接管,這意味著pod(或image)定義中提供的用戶和組id應(yīng)用于實(shí)際的物理塊設(shè)備,塊存儲(chǔ)通常不共享。

1.12 SELINUX和卷security

除了SCC之外,所有預(yù)定義的安全上下文約束都將seLinuxContext設(shè)置為MustRunAs。最可能匹配pod需求的SCC迫使pod使用SELinux策略。pod使用的SELinux策略可以在pod本身、image、SCC或project(提供默認(rèn)值)中定義。
SELinux標(biāo)簽可以在pod的securityContext中定義。,并支持user、role、type和level標(biāo)簽。

1.13 ELinuxContext選項(xiàng)

  • MustRunAs
如果不使用預(yù)先分配的值,則要求配置seLinuxOptions。使用seLinuxOptions作為默認(rèn)值,從而針對(duì)seLinuxOptions驗(yàn)證。
  • RunAsAny
沒有提供默認(rèn),允許指定任何seLinuxOptions。

二 持久卷練習(xí)

2.1 前置準(zhǔn)備

準(zhǔn)備完整的OpenShift集群,參考《003.OpenShift網(wǎng)絡(luò)》2.1。

2.2 本練習(xí)準(zhǔn)備

  1 [student@workstation ~]$ lab deploy-volume setup

2.3 配置NFS

本實(shí)驗(yàn)不詳解NFS的配置和創(chuàng)建,直接使用/root/DO280/labs/deploy-volume/config-nfs.sh腳本實(shí)現(xiàn),具體腳本內(nèi)容可通過以下方式查看。
同時(shí)NFS由services節(jié)點(diǎn)提供。
  1 [root@services ~]# less -FiX /root/DO280/labs/deploy-volume/config-nfs.sh
  2 [root@services ~]# /root/DO280/labs/deploy-volume/config-nfs.sh		#創(chuàng)建NFS
  3 Export directory /var/export/dbvol created.
  4 [root@services ~]# showmount -e						#確認(rèn)驗(yàn)證
 
clipboard

2.4 node節(jié)點(diǎn)掛載NFS

  1 [root@node1 ~]# mount -t nfs services.lab.:/var/export/dbvol /mnt
  2 [root@node1 ~]# mount | grep /mnt
  3 [root@node1 ~]# ll -a /mnt/		#檢查相關(guān)權(quán)限
 
clipboard
  1 [root@node1 ~]# umount /mnt/		#卸載
提示:建議node2也做以上掛載測試,測試完成后建議下載,NFS共享在OpenShift需要的時(shí)候會(huì)自動(dòng)掛載。

2.5 創(chuàng)建持久卷

  1 [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.
  2 [student@workstation ~]$ less -FiX /home/student/DO280/labs/deploy-volume/mysqldb-volume.yml
  3 apiVersion: v1
  4 kind: PersistentVolume
  5 metadata:
  6   name: mysqldb-volume
  7 spec:
  8   capacity:
  9     storage: 3Gi
 10   accessModes:
 11   - ReadWriteMany
 12   nfs:
 13     path: /var/export/dbvol
 14     server: services.lab.
 15   persistentVolumeReclaimPolicy: Recycle
 16 [student@workstation ~]$ oc create -f /home/student/DO280/labs/deploy-volume/mysqldb-volume.yml
 17 [student@workstation ~]$ oc get pv		#查看PV
 18 NAME    CAPACITYACCESS    MODES    RECLAIM    POLICY STATUS    CLAIM    STORAGECLASS    REASON    AGE
 19 mysqldb-volume    3Gi     RWX      Recycle    Available                                           1m
 

2.6 創(chuàng)建項(xiàng)目

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

2.7 部署應(yīng)用

  1 [student@workstation ~]$ oc new-app --name=mysqldb   2 --docker-image=registry.lab./rhscl/mysql-57-rhel7   3 -e MYSQL_USER=ose   4 -e MYSQL_PASSWORD=openshift   5 -e MYSQL_DATABASE=quotes
  6 [student@workstation ~]$ oc status		#確認(rèn)驗(yàn)證
  7 In project persistent-storage on server https://master.lab.:443
  8 
  9 
 10 svc/mysqldb - 172.30.39.72:3306
 11   dc/mysqldb deploys istag/mysqldb:latest
 12     deployment #1 deployed 58 seconds ago - 1 pod

2.8 配置持久卷

  1 [student@workstation ~]$ oc describe pod mysqldb | grep -A2 'Volumes'	#查看當(dāng)前pod的Volume
  2 Volumes:
  3   mysqldb-volume-1:
  4     Type:    EmptyDir (a temporary directory that shares a pod's lifetime)
  5 [student@workstation ~]$ oc set volumes dc mysqldb   6 --add --overwrite --name=mysqldb-volume-1 -t pvc   7 --claim-name=mysqldb-pvclaim   8 --claim-size=3Gi   9 --claim-mode='ReadWriteMany'		#修改dc并創(chuàng)建PVC
 10 [student@workstation ~]$ oc describe pod mysqldb | grep -E -A 2 'Volumes|ClaimName'	#查看驗(yàn)證
 
clipboard
  1 [student@workstation ~]$ oc get pvc		#查看PVC
  2 NAME              STATUS    VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
  3 mysqldb-pvclaim   Bound     mysqldb-volume   3Gi        RWX                           2m
 

2.9 端口轉(zhuǎn)發(fā)

  1 [student@workstation ~]$ oc get pod
  2 NAME              READY     STATUS    RESTARTS   AGE
  3 mysqldb-2-r7wz8   1/1       Running   0          4m
  4 [student@workstation ~]$ oc port-forward mysqldb-2-r7wz8 3306:3306
 

2.10 測試數(shù)據(jù)庫

  1 [student@workstation ~]$ mysql -h127.0.0.1 -uose -popenshift   2 quotes < /home/student/DO280/labs/deploy-volume/quote.sql	#填充數(shù)據(jù)測試
  3 [student@workstation ~]$ mysql -h127.0.0.1 -uose -popenshift   4 quotes -e "select count(*) from quote;"				#確認(rèn)填充完成
  5 [student@workstation ~]$ ssh root@services ls -la /var/export/dbvol	#查看NFS服務(wù)端數(shù)據(jù)
  6 ……
  7 drwxr-x---. 2 nfsnobody nfsnobody       54 Jul 21 23:43 quotes
  8 ……
  9 [student@workstation ~]$ ssh root@services ls -la /var/export/dbvol/quotes
 10 total 116
 11 drwxr-x---. 2 nfsnobody nfsnobody    54 Jul 21 23:43 .
 12 drwx------. 6 nfsnobody nfsnobody  4096 Jul 21 23:39 ..
 13 -rw-r-----. 1 nfsnobody nfsnobody    65 Jul 21 23:39 db.opt
 14 -rw-r-----. 1 nfsnobody nfsnobody  8584 Jul 21 23:43 quote.frm
 15 -rw-r-----. 1 nfsnobody nfsnobody 98304 Jul 21 23:44 quote.ibd
 

2.11 刪除PV

  1 [student@workstation ~]$ oc delete project persistent-storage	#刪除項(xiàng)目
  2 project "persistent-storage" deleted
  3 [student@workstation ~]$ oc delete pv mysqldb-volume		#刪除PV
  4 persistentvolume "mysqldb-volume" deleted
 
 

2.12 驗(yàn)證持久性

刪除PV后驗(yàn)證數(shù)據(jù)是否會(huì)長期保留。
  1 [student@workstation ~]$ ssh root@services ls -la /var/export/dbvol
  2 ……
  3 drwxr-x---. 2 nfsnobody nfsnobody       54 Jul 21 23:43 quotes
  4 ……
  5 [student@workstation ~]$ ssh root@services rm -rf /var/export/dbvol/*	#使用rm才可以徹底刪除
 

三 私有倉庫持久存儲(chǔ)

3.1 創(chuàng)建私有倉庫持久卷

OCP內(nèi)部倉庫是source-to-image(S2I)流程的一個(gè)重要組件,該流程用于從應(yīng)用程序源代碼創(chuàng)建pod。S2I流程的最終輸出是一個(gè)容器image,它被推送到OCP內(nèi)部倉庫,然后可以用于部署。
在生產(chǎn)環(huán)境中,通常建議為內(nèi)部倉庫提供一個(gè)持久性存儲(chǔ)。否則,在重新創(chuàng)建registry pod之后,S2I創(chuàng)建的pod可能無法啟動(dòng)。例如,在master節(jié)點(diǎn)重新啟動(dòng)之后。
OpenShift安裝程序配置并啟動(dòng)一個(gè)默認(rèn)的持久倉庫,該倉庫使用NFS共享,由Inventory文件中的openshift_hosted_registry_storage_*變量定義。在生產(chǎn)環(huán)境中,Red Hat建議由外部專用的存儲(chǔ)提供持久性存儲(chǔ),該服務(wù)器配置為彈性和高可用性。
高級(jí)安裝程序?qū)FS服務(wù)器配置為使用外部NFS服務(wù)器上的持久存儲(chǔ),在[NFS]字段中定義的一個(gè)NFS服務(wù)器的列表。該服務(wù)器與openshift_hosted_registry_storage*變量一起使用,以配置NFS服務(wù)器。
示例配置:
  1 [OSEv3:vars]
  2 openshift_hosted_registry_storage_kind=nfs		#定義OCP存儲(chǔ)后端
  3 openshift_hosted_registry_storage_access_modes=['ReadWriteMany']	#定義訪問模式,默認(rèn)為ReadWriteMany,表示允許多個(gè)節(jié)點(diǎn)以讀寫形式掛載
  4 openshift_hosted_registry_storage_nfs_directory=/exports		#定義NFS服務(wù)器上的NFS存儲(chǔ)目錄
  5 openshift_hosted_registry_storage_nfs_options='*(rw,root_squash)'	#定義存儲(chǔ)卷的NFS選項(xiàng)。這些選項(xiàng)被添加到/etc/ exports.d/openshift-ansible.exports中。rw選項(xiàng)允許對(duì)NFS卷進(jìn)行讀寫訪問,root_squash選項(xiàng)阻止遠(yuǎn)程連接的根用戶擁有root特權(quán),并為nfsnobody分配用戶ID
  6 openshift_hosted_registry_storage_volume_name=registry		#定義要用于持久倉庫的NFS目錄的名稱
  7 openshift_hosted_registry_storage_volume_size=40Gi			#定義持久卷大小
  8 ... output omitted ...
  9 [nfs]
 10 services.lab.
 
在為持久倉庫安裝和配置存儲(chǔ)之后,OpenShift在OpenShift項(xiàng)目中創(chuàng)建一個(gè)名為register-volume的持久卷。持久性卷的容量為40gb,并且根據(jù)定義設(shè)置了Retain策略。同時(shí)默認(rèn)項(xiàng)目中的pvc調(diào)用pv。
  1 [student@workstation ~]$ oc describe pv registry-volume
  2 Name:            registry-volume	#定義持久卷名
  3 Labels:          <none>
  4 Annotations:     pv.kubernetes.io/bound-by-controller=yes
  5 StorageClass:
  6 Status:          Bound
  7 Claim:           default/registry-claim	#定義使用持久卷的聲明
  8 Reclaim Policy:  Retain			#默認(rèn)持久卷策略,具有Retain策略的卷在從其聲明中釋放后不會(huì)被擦除
  9 Access Modes:    RWX			#定義持久卷的訪問模式,由Ansible inventory文件的openshift_hosted_registry_storage_access_modes=['ReadWriteMany']變量定義
 10 Capacity:        40Gi			#定義持久卷的大小,由Ansible inventory文件的openshift_hosted_registry_storage_volume_size變量定義
 11 Message:
 12 Source:					#定義存儲(chǔ)后端的位置和NFS共享
 13     Type:      NFS (an NFS mount that lasts the lifetime of a pod)
 14     Server:    services.lab.
 15     Path:      /exports/registry
 16     ReadOnly:  false
 17 Events:        <none>
 
運(yùn)行以下命令,確認(rèn)OpenShift內(nèi)部倉庫已配置registry-volume作為默認(rèn)的PersistentVolumeClaim。
  1 [user@demo ~] oc describe dc/docker-registry | grep -A4 Volumes
  2   Volumes:
  3    registry-storage:
  4     Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
  5     ClaimName:  registry-claim
  6     ReadOnly:   false
 
OCP內(nèi)部倉庫將image和metadata存儲(chǔ)為普通文件和文件夾,這意味著可以檢查PV源存儲(chǔ),查看倉庫是否向其寫入了文件。
在生產(chǎn)環(huán)境中,這是通過訪問外部NFS服務(wù)器來完成的。但是,在本環(huán)境中,NFS共享是在services的VM上配置的,因此ssh至services查看,以便于驗(yàn)證OCP內(nèi)部倉庫成功將image存儲(chǔ)到持久存儲(chǔ)中。
示例:一個(gè)名為hello的應(yīng)用程序在default命名空間中運(yùn)行,下面的命令驗(yàn)證圖像是否存儲(chǔ)在持久存儲(chǔ)中。
  1 [user@demo ~] ssh root@master ls -l   2 /var/export/registryvol/docker/registry/v2/repositories/default/
 

四 PV綜合實(shí)驗(yàn)

4.1 前置準(zhǔn)備

準(zhǔn)備完整的OpenShift集群,參考《003.OpenShift網(wǎng)絡(luò)》2.1。

4.2 本練習(xí)準(zhǔn)備

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

4.3 配置NFS

本實(shí)驗(yàn)不詳解NFS的配置和創(chuàng)建,直接使用/root/DO280/labs/deploy-volume/config-nfs.sh腳本實(shí)現(xiàn),具體腳本內(nèi)容可通過以下方式查看。
同時(shí)NFS由services節(jié)點(diǎn)提供。
  1 [root@services ~]# less -FiX /root/DO280/labs/storage-review/config-review-nfs.sh
  2 [root@services ~]# /root/DO280/labs/storage-review/config-review-nfs.sh		#創(chuàng)建NFS
  3 [root@services ~]# showmount -e							#確認(rèn)驗(yàn)證
 
clipboard

4.4 創(chuàng)建持久卷

  1 [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.
  2 [student@workstation ~]$ less -FiX /home/student/DO280/labs/storage-review/review-volume-pv.yaml
  3 apiVersion: v1
  4 kind: PersistentVolume
  5 metadata:
  6   name: review-pv
  7 spec:
  8   capacity:
  9     storage: 3Gi
 10   accessModes:
 11   - ReadWriteMany
 12   nfs:
 13     path: /var/export/review-dbvol
 14     server: services.lab.
 15   persistentVolumeReclaimPolicy: Recycle
 16 [student@workstation ~]$ oc create -f /home/student/DO280/labs/storage-review/review-volume-pv.yaml
 17 [student@workstation ~]$ oc get pv		#查看PV
 18 NAME    CAPACITYACCESS    MODES    RECLAIM    POLICY STATUS    CLAIM    STORAGECLASS    REASON    AGE
 19 review-pv    3Gi     RWX      Recycle    Available                                           13s
 

4.5 部署模板

  1 [student@workstation ~]$ less -FiX /home/student/DO280/labs/storage-review/instructor-template.yaml
  2 [student@workstation ~]$ oc create -n openshift -f /home/student/DO280/labs/storage-review/instructor-template.yaml
  3 #使用模板創(chuàng)建應(yīng)用至openshift namespace中
 

4.6 創(chuàng)建項(xiàng)目

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

4.7 web部署應(yīng)用

瀏覽器訪問: https://master.lab.
clipboard
選擇Catalog
clipboard
選擇PHP,并使用instructor-template。
clipboard
設(shè)置Application Hostname,然后直接下一步,模板會(huì)創(chuàng)建一個(gè)數(shù)據(jù)庫服務(wù)器。
clipboard
單擊Continue to project overview以監(jiān)視應(yīng)用程序的構(gòu)建過程。從提供的服務(wù)框架中,單擊講師。單擊部署配置#1條目旁邊的下拉箭頭,打開部署面板。當(dāng)構(gòu)建完成時(shí),build部分的Complete旁邊應(yīng)該出現(xiàn)一個(gè)綠色的復(fù)選標(biāo)記。
clipboard
clipboard

4.8 端口轉(zhuǎn)發(fā)

  1 [student@workstation ~]$ oc login -u developer -p redhat https://master.lab.
  2 [student@workstation ~]$ oc get pod
  3 NAME                 READY     STATUS      RESTARTS   AGE
  4 instructor-1-9fmct   1/1       Running     0          43s
  5 instructor-1-build   0/1       Completed   0          2m
  6 mysql-1-f7rrq        1/1       Running     0          2m
  7 [student@workstation ~]$ oc port-forward mysql-1-f7rrq 3306:3306
 

4.9 填充數(shù)據(jù)庫

  1 [student@workstation ~]$ mysql -h127.0.0.1 -u instructor -ppassword   2 instructor < /home/student/DO280/labs/storage-review/instructor.sql
  3 [student@workstation ~]$ mysql -h127.0.0.1 -u instructor -ppassword instructor -e "select * from instructors;"	#查看
  4 
clipboard

4.10 測試訪問

clipboardworkstations的瀏覽器訪問:http://instructor.apps.lab.

4.11 測試添加數(shù)據(jù)

 
clipboard
 
clipboard

4.12 確認(rèn)驗(yàn)證

  1 [student@workstation ~]$ lab storage-review grade		#環(huán)境腳本判斷實(shí)驗(yàn)

4.13 清理刪除

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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多