主頁 > 作業系統 > 006.OpenShift持久性存盤

006.OpenShift持久性存盤

2020-09-15 18:29:34 作業系統

一 持久存盤

1.1 持久存盤概述

默認情況下,運行容器使用容器內的臨時存盤,Pods由一個或多個容器組成,這些容器一起部署,共享相同的存盤和其他資源,可以在任何時候創建、啟動、停止或銷毀,使用臨時存盤意味著,當容器停止時,寫入容器內的檔案系統的資料將丟失, 當容器在停止時也需要持久的保存資料時,OpenShift使用Kubernetes持久卷(PVs)為pod提供持久存盤,

1.2 持久存盤場景

通常用于資料庫,啟動一個資料庫的pod時提供的默認臨時存盤,如果銷毀并重新創建資料庫pod,則銷毀臨時存盤并丟失資料,如果使用持久存盤,則資料庫將資料存盤到pod外部的持久卷中,如果銷毀并重新創建pod,資料庫應用程式將繼續訪問存盤資料的相同外部存盤,

1.3 持久存盤相關概念

持久卷(PV)是OpenShift資源,它只由OpenShift管理員創建和銷毀,持久卷資源表示所有OpenShift節點都可以訪問的網路連接存盤, 持久性存盤組件: OCP使用Kubernetes持久卷(PV)技術,允許管理員為集群提供持久性存盤,開發人員使用持久性卷宣告(PVC)請求PV資源,而不需要了解具體的底層存盤基礎設施, Persistent Volume:PV是OpenShift集群中的資源,由PersistentVolume API物件定義,它表示集群中由管理員提供的現有網路存盤的一部分,它是集群中的資源,就像節點是集群資源一樣,PV的生命周期獨立于使用PV的任何單獨pod, Persistent Volume Claim:pvc由PersistentVolumeClaim API物件定義,該物件表示開發人員對存盤的請求,它與pod類似,pod消耗節點資源,而pvc消耗PV資源,

1.4 持久存盤插件

卷是掛載的檔案系統,對pods及其容器可用,并且可以由許多本地或網路連接的存盤進行備份,OpenShift使用插件來支持以下不同的后端用于持久存盤:
  • 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的任何方式掛載在主機上,provider具有不同的功能,并且每個持久卷的訪問模式都設定為該特定卷支持的特定模式,例如,NFS可以支持多個讀/寫客戶端,但是特定的NFS PV可以在服務器上作為只讀匯出, 每個PV接收自己的一組訪問模式,描述特定的持久卷的功能, 訪問模式見下表:
訪問模式 CLI縮寫 描述
ReadWriteOnce RWO 卷可以被單個節點掛載為讀/寫
ReadOnlyMany ROX 卷可以由許多節點以只讀方式掛載
ReadWriteMany RWX 卷可以被許多節點掛載為讀/寫
PV claims與具有類似訪問模式的卷匹配,唯一的兩個匹配標準是訪問模式和大小,claim的訪問模式表示請求,因此,可以授予用戶更大的訪問權限,但絕不能減少訪問權限,例如,如果一個claim請求RWO,但是惟一可用的卷是NFS PV (RWO+ROX+RWX),那么claim將匹配NFS,因為它支持RWO, 所有具有相同模式的卷都被分組,然后按大小(從最小到最大)排序, master上負責將PV系結到PVC上的service接收具有匹配模式的組,并在每個組上迭代(按大小順序),直到一個大小匹配為止,然后將PV系結到PVC上,

1.6 Persistent Volume Storage Classes

PV Claims可以通過在storageClassName屬性中指定它的名稱來選擇性地請求特定的存盤類,只有與PVC具有相同存盤類名稱的請求類的pv才能系結到PVC, 集群管理員可以為所有PVC設定一個默認存盤類,或者配置動態供應程式來服務一個或多個存盤類,這些存盤類將匹配可用PVC中的規范,

1.7 創建pv和PVC資源

pv是集群中的資源,pvc是對這些資源的請求,也充當對資源的claim檢查,pv與PVCs的相互作用具有以下生命周期:
  • 創建持久卷
集群管理員創建任意數量的pv,這些pv表示集群用戶可以通過OpenShift API使用的實際存盤的資訊,
  • 定義持久卷宣告
用戶創建具有特定存盤量、特定訪問模式和可選存盤類的PVC,master監視新的pvc,要么找到匹配的PV,要么等待存盤類創建一個供應程式,然后將它們系結在一起,
  • 使用持久存盤
Pods使用claims作為卷,集群檢查查找系結卷的宣告,并為pod系結該卷,對于那些支持多種訪問模式的卷,用戶在將其宣告用作pod中的卷時指定需要哪種模式, 一旦用戶有了一個claim,并且該claim被系結,系結的PV就屬于用戶,使用程序中該PV都屬于該用戶,用戶通過在pod的Volume中包含一個持久的卷claim來調度pod并訪問其宣告的pv,

1.8 使用NFS的PV

OpenShift使用隨機uid運行容器,因此將Linux用戶從OpenShift節點映射到NFS服務器上的用戶并不能正常作業,作為OpenShift pv使用的NFS共享必須遵從如下配置:
  • 屬于nfsnobody用戶和組,
  • 擁有rwx------權限(即0700),
  • 使用all_squash選項
示例配置: /var/export/vol *(rw,async,all_squash) 其他NFS export選項,例如sync和async,與OpenShift無關,如果使用任何一個選項,OpenShift都可以作業,但是,在高延遲環境中,添加async選項可以加快NFS共享的寫操作(例如,將image push到倉庫的場景), 使用async選項更快,因為NFS服務器在處理請求時立即回應客戶端,而不需要等待資料寫到磁盤, 當使用sync選項時,則相反,NFS服務器只在資料寫到磁盤之后才回應客戶端, 注意:NFS共享檔案系統大小和用戶配額對OpenShift沒有影響,PV大小在PV資源定義中指定,如果實際檔案系統更小,則PV被創建并系結,如果PV更大,OpenShift不會將使用的空間限制為指定的PV大小,并且允許容器使用檔案系統上的所有空閑空間,OpenShift自身提供了存盤配額和存盤位置限制,可用于控制專案中的資源分配, 默認的SELinux策略不允許容器訪問NFS共享,必須在每個OpenShift實體節點中更改策略,方法是將virt_use_nfs和virt_sandbox_use_nfs變數設定為true,
  1 # setsebool -P virt_use_nfs=true
  2 # setsebool -P virt_sandbox_use_nfs=true
 

1.9 NFS回收政策

NFS支持OpenShift的Recyclable插件,根據在每個持久卷上設定的策略處理自動執行回收任務, 默認情況下,持久卷被設定為Retain,Retain reclaim策略允許手動回收資源,當洗掉pv claim時,持久卷仍然存在,并且認為該卷已被釋放,但它還不能用于另一個claim,因為來自前一個claim的資料仍然保留在卷上,此時管理員可以手動回收卷, NFS卷及其回收策略設定為Recycle,表示在從claim中釋放后將被清除,例如,當將NFS回收策略設定為Recycle后,在洗掉用戶系結到該卷的pv claim之后,會在該卷上運行rm -rf命令,在它被回收之后,NFS卷可以直接系結到一個新的pv claim,

1.10 Supplemental group

Supplemental group是常規的Linux組,當一個行程在Linux中運行時,它有一個UID、一個GID和一個或多個Supplemental group,可以為容器的主行程設定這些屬性, Supplemental groupid通常用于控制對共享存盤的訪問,比如NFS和GlusterFS,而fsGroup用于控制對塊存盤(如Ceph的RBD活iSCSI)的訪問, OpenShift共享存盤插件掛載卷,以便使掛載上的POSIX權限與目標存盤上的權限匹配,例如,如果目標存盤的所有者ID是1234,組ID是5678,那么宿主節點和容器中的掛載將具有相同的ID,因此,容器的主行程必須匹配一個或兩個id,才能訪問該卷,
  1 [root@node ~]# showmount -e
  2 Export list for master.lab.example.com:
  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,通常,容器不應該作為root用戶運行,在這個NFS示例中,如果容器不是作為UID 10000000運行的,并且不是組650000的成員,那么這些容器就不能訪問NFS export,

1.11 通過fsgroup使用塊存盤

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

1.12 SELINUX和卷security

除了SCC之外,所有預定義的安全背景關系約束都將seLinuxContext設定為MustRunAs,最可能匹配pod需求的SCC迫使pod使用SELinux策略,pod使用的SELinux策略可以在pod本身、image、SCC或project(提供默認值)中定義, SELinux標簽可以在pod的securityContext中定義,,并支持user、role、type和level標簽,

1.13 ELinuxContext選項

  • MustRunAs
如果不使用預先分配的值,則要求配置seLinuxOptions,使用seLinuxOptions作為默認值,從而針對seLinuxOptions驗證,
  • RunAsAny
沒有提供默認,允許指定任何seLinuxOptions,

二 持久卷練習

2.1 前置準備

準備完整的OpenShift集群,參考《003.OpenShift網路》2.1,

2.2 本練習準備

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

2.3 配置NFS

本實驗不詳解NFS的配置和創建,直接使用/root/DO280/labs/deploy-volume/config-nfs.sh腳本實作,具體腳本內容可通過以下方式查看, 同時NFS由services節點提供,
  1 [root@services ~]# less -FiX /root/DO280/labs/deploy-volume/config-nfs.sh
  2 [root@services ~]# /root/DO280/labs/deploy-volume/config-nfs.sh		#創建NFS
  3 Export directory /var/export/dbvol created.
  4 [root@services ~]# showmount -e						#確認驗證
  clipboard

2.4 node節點掛載NFS

  1 [root@node1 ~]# mount -t nfs services.lab.example.com:/var/export/dbvol /mnt
  2 [root@node1 ~]# mount | grep /mnt
  3 [root@node1 ~]# ll -a /mnt/		#檢查相關權限
  clipboard
  1 [root@node1 ~]# umount /mnt/		#卸載
提示:建議node2也做以上掛載測驗,測驗完成后建議下載,NFS共享在OpenShift需要的時候會自動掛載,

2.5 創建持久卷

  1 [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.example.com
  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.example.com
 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 創建專案

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

2.7 部署應用

  1 [student@workstation ~]$ oc new-app --name=mysqldb \
  2 --docker-image=registry.lab.example.com/rhscl/mysql-57-rhel7 \
  3 -e MYSQL_USER=ose \
  4 -e MYSQL_PASSWORD=openshift \
  5 -e MYSQL_DATABASE=quotes
  6 [student@workstation ~]$ oc status		#確認驗證
  7 In project persistent-storage on server https://master.lab.example.com: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'	#查看當前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并創建PVC
 10 [student@workstation ~]$ oc describe pod mysqldb | grep -E -A 2 'Volumes|ClaimName'	#查看驗證
  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 埠轉發

  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 測驗資料庫

  1 [student@workstation ~]$ mysql -h127.0.0.1 -uose -popenshift \
  2 quotes < /home/student/DO280/labs/deploy-volume/quote.sql	#填充資料測驗
  3 [student@workstation ~]$ mysql -h127.0.0.1 -uose -popenshift \
  4 quotes -e "select count(*) from quote;"				#確認填充完成
  5 [student@workstation ~]$ ssh root@services ls -la /var/export/dbvol	#查看NFS服務端資料
  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	#洗掉專案
  2 project "persistent-storage" deleted
  3 [student@workstation ~]$ oc delete pv mysqldb-volume		#洗掉PV
  4 persistentvolume "mysqldb-volume" deleted
   

2.12 驗證持久性

洗掉PV后驗證資料是否會長期保留,
  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才可以徹底洗掉
 

三 私有倉庫持久存盤

3.1 創建私有倉庫持久卷

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服務器, 示例配置:
  1 [OSEv3:vars]
  2 openshift_hosted_registry_storage_kind=nfs		#定義OCP存盤后端
  3 openshift_hosted_registry_storage_access_modes=['ReadWriteMany']	#定義訪問模式,默認為ReadWriteMany,表示允許多個節點以讀寫形式掛載
  4 openshift_hosted_registry_storage_nfs_directory=/exports		#定義NFS服務器上的NFS存盤目錄
  5 openshift_hosted_registry_storage_nfs_options='*(rw,root_squash)'	#定義存盤卷的NFS選項,這些選項被添加到/etc/ exports.d/openshift-ansible.exports中,rw選項允許對NFS卷進行讀寫訪問,root_squash選項阻止遠程連接的根用戶擁有root特權,并為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.example.com
  在為持久倉庫安裝和配置存盤之后,OpenShift在OpenShift專案中創建一個名為register-volume的持久卷,持久性卷的容量為40gb,并且根據定義設定了Retain策略,同時默認專案中的pvc呼叫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			#默認持久卷策略,具有Retain策略的卷在從其宣告中釋放后不會被擦除
  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:					#定義存盤后端的位置和NFS共享
 13     Type:      NFS (an NFS mount that lasts the lifetime of a pod)
 14     Server:    services.lab.example.com
 15     Path:      /exports/registry
 16     ReadOnly:  false
 17 Events:        <none>
  運行以下命令,確認OpenShift內部倉庫已配置registry-volume作為默認的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內部倉庫將image和metadata存盤為普通檔案和檔案夾,這意味著可以檢查PV源存盤,查看倉庫是否向其寫入了檔案, 在生產環境中,這是通過訪問外部NFS服務器來完成的,但是,在本環境中,NFS共享是在services的VM上配置的,因此ssh至services查看,以便于驗證OCP內部倉庫成功將image存盤到持久存盤中, 示例:一個名為hello的應用程式在default命名空間中運行,下面的命令驗證影像是否存盤在持久存盤中,
  1 [user@demo ~] ssh root@master ls -l \
  2 /var/export/registryvol/docker/registry/v2/repositories/default/
 

四 PV綜合實驗

4.1 前置準備

準備完整的OpenShift集群,參考《003.OpenShift網路》2.1,

4.2 本練習準備

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

4.3 配置NFS

本實驗不詳解NFS的配置和創建,直接使用/root/DO280/labs/deploy-volume/config-nfs.sh腳本實作,具體腳本內容可通過以下方式查看, 同時NFS由services節點提供,
  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		#創建NFS
  3 [root@services ~]# showmount -e							#確認驗證
  clipboard

4.4 創建持久卷

  1 [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.example.com
  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.example.com
 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 #使用模板創建應用至openshift namespace中
 

4.6 創建專案

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

4.7 web部署應用

瀏覽器訪問: https://master.lab.example.com clipboard 選擇Catalog clipboard 選擇PHP,并使用instructor-template, clipboard 設定Application Hostname,然后直接下一步,模板會創建一個資料庫服務器, clipboard 單擊Continue to project overview以監視應用程式的構建程序,從提供的服務框架中,單擊講師,單擊部署配置#1條目旁邊的下拉箭頭,打開部署面板,當構建完成時,build部分的Complete旁邊應該出現一個綠色的復選標記, clipboard clipboard

4.8 埠轉發

  1 [student@workstation ~]$ oc login -u developer -p redhat https://master.lab.example.com
  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 填充資料庫

  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.example.com

4.11 測驗添加資料

  clipboard   clipboard

4.12 確認驗證

  1 [student@workstation ~]$ lab storage-review grade		#環境腳本判斷實驗

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
 

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/49257.html

標籤:Linux

上一篇:Nginx 如何自定義變數?

下一篇:Docker Dockerfile 指令詳解與實戰案例

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more