設置掛載參數
更新時間 2024-01-05 16:04:24
最近更新時間: 2024-01-05 16:04:24
分享文章
本文主要介紹設置掛載參數。
背景信息
容器使用云存儲的時候是將云存儲掛載到容器上,掛載完成后就可以像使用本地目錄一樣使用云存儲。
本節主要介紹在掛載云存儲的時候如何設置掛載參數,包括文件系統存儲卷和對象存儲卷的掛載參數設置。您可以在PV中設置掛載參數,然后通過PVC綁定PV;也可以在StorageClass中設置掛載參數,然后使用StorageClass創建PVC,從而動態創建出的PV會默認帶有StorageClass中設置掛載參數。
文件存儲掛載參數
CCE的存儲插件Everest在掛載文件存儲時默認設置了下表所示的參數。除了這些參數外,您還可以設置其他的文件存儲掛載參數。
文件存儲掛載參數
| 參數 | 描述 |
|---|---|
| keep-original-ownership | 表示是否保留文件掛載點的ownership,使用該參數時,要求Everest插件版本為1.2.63或2.1.2以上。 默認為不添加該參數,此時掛載文件存儲時將會默認把掛載點的ownership修改為root:root。 如添加該參數,掛載文件存儲時將保持文件系統原有的ownership。 |
| vers=3 | 文件系統版本,目前只支持NFSv3。取值:3 |
| nolock | 選擇是否使用NLM協議在服務器上鎖文件。當選擇nolock選項時,鎖對于同一主機的應用有效,對不同主機不受鎖的影響。 |
| timeo=600 | NFS客戶端重傳請求前的等待時間(單位為0.1秒)。建議值:600。 |
| hard/soft | 掛載方式類型。 取值為hard,即使用硬連接方式,若NFS請求超時,則客戶端一直重新請求直至成功。 取值為soft,即軟掛載方式掛載系統,若NFS請求超時,則客戶端向調用程序返回錯誤。默認為hard。 |
對象存儲掛載參數
CCE的存儲插件Everest在掛載文件存儲時默認設置了下表參數。除了這些參數外,您還可以設置其他的對象存儲掛載參數。
默認使用且不可取消的掛載參數
| 參數 | 描述 |
|---|---|
| keep-original-ownership | 表示是否保留文件掛載點的ownership,使用該參數時,要求Everest插件版本為1.2.63或2.1.2以上。 默認為不添加該參數,此時掛載文件存儲時將會默認把掛載點的ownership修改為root:root。 如添加該參數,掛載文件存儲時將保持文件系統原有的ownership。 |
| vers=3 | 文件系統版本,目前只支持NFSv3。取值:3 |
| nolock | 選擇是否使用NLM協議在服務器上鎖文件。當選擇nolock選項時,鎖對于同一主機的應用有效,對不同主機不受鎖的影響。 |
| timeo=600 | NFS客戶端重傳請求前的等待時間(單位為0.1秒)。建議值:600。 |
| hard/soft | 掛載方式類型。 取值為hard,即使用硬連接方式,若NFS請求超時,則客戶端一直重新請求直至成功。 取值為soft,即軟掛載方式掛載系統,若NFS請求超時,則客戶端向調用程序返回錯誤。默認為hard。 |
默認使用且可取消的掛載參數
| 參數 | 描述 |
|---|---|
| max_write=131072 | 使用該選項,由obsfs分配inode編號。讀寫模式下自動開啟。 |
| ssl_verify_hostname=0 | 不根據主機名驗證SSL證書。 |
| max_background=100 | 可配置后臺最大等待請求數。并行文件系統自動使用。 |
| public_bucket=1 | 設置為1時匿名掛載公共桶。對象桶讀寫模式下自動使用。 |
對象存儲卷掛載時使用的所有參數,可以登錄到運行掛載對象存儲卷的Pod所在節點上通過進程詳情觀察:
- 對象桶:ps -ef | grep s3fs
root 22142 1 0 Jun03 ? 00:00:00 /usr/bin/s3fs pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d /mnt/paas/kubernetes/kubelet/pods/0b13ff68-4c8e-4a1c-b15c-724fd4d64389/volumes/kubernetes.io~csi/pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d/mount -o url=//{{endpoint}}:443 -o endpoint=xxxxxx -o passwd_file=/opt/everest-host-connector/1622707954357702943_obstmpcred/pvc-82fe2cbe-3838-43a2-8afb-f994e402fb9d -o nonempty -o big_writes -o enable_noobj_cache -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o max_write=131072 -o multipart_size=20 -o umask=0
- 并行文件系統:ps -ef | grep obsfs
root 1355 1 0 Jun03 ? 00:03:16 /usr/bin/obsfs pvc-86720bb9-5aa8-4cde-9231-5253994f8468 /mnt/paas/kubernetes/kubelet/pods/c959a91d-eced-4b41-91c6-96cbd65324f9/volumes/kubernetes.io~csi/pvc-86720bb9-5aa8-4cde-9231-5253994f8468/mount -o url=//{{endpoint}}:443 -o endpoint=xxxxxx -o passwd_file=/opt/everest-host-connector/1622714415305160399_obstmpcred/pvc-86720bb9-5aa8-4cde-9231-5253994f8468 -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o umask=0027 -o max_write=131072 -o max_background=100 -o uid=10000 -o gid=10000
前提條件
- Everest插件版本要求1.2.8及以上版本。
- 插件主要負責將掛載參數識別并傳遞給底層存儲,指定參數有否有效依賴于底層存儲是否支持。
約束與限制
掛載參數暫不支持安全容器。
在PV中設置掛載參數
在PV中設置掛載參數可以通過mountOptions字段實現,如下所示,mountOptions支持掛載的字段請參見文件存儲掛載參數和對象存儲掛載參數。
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-obs-example
annotations:
pv.kubernetes.io/provisioned-by: everest-csi-provisioner
spec:
mountOptions:umask=0027uid=10000gid=10000
accessModes:ReadWriteMany
capacity:
storage: 1Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: pvc-obs-example
namespace: default
csi:
driver: obs.csi.everest.io
fsType: obsfs
volumeAttributes:
everest.io/obs-volume-type: STANDARD
everest.io/region: cn-north-4
storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
volumeHandle: obs-normal-static-pv
persistentVolumeReclaimPolicy: Delete
storageClassName: csi-obs
PV創建后,可以創建PVC關聯PV,然后在工作負載的容器中掛載。
在StorageClass中設置掛載參數
在StorageClass中設置掛載參數同樣可以通過mountOptions字段實現,如下所示,mountOptions支持掛載的字段請參見文件存儲掛載參數和對象存儲掛載參數。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-obs-mount-option
mountOptions:umask=0027uid=10000gid=10000
parameters:
csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io
csi.storage.k8s.io/fstype: s3fs
everest.io/obs-volume-type: STANDARD
provisioner: everest-csi-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate
StorageClass設置好后,就可以使用這個StorageClass創建PVC,從而動態創建出的PV會默認帶有StorageClass中設置掛載參數。