iT邦幫忙

2022 iThome 鐵人賽

DAY 19
1
DevOps

30天準備CKA考試系列 第 19

Day 19:Storage Class

  • 分享至 

  • xImage
  •  

昨天我們有提到如果要動態建立PV的話,需要使用StorageClass,而它的使用方式就是在建立PVC時,指定要用什麼StorageClass,它就會製作相對應的PV。

我們今天就來討論它和如何使用PVC~

先看看StorageClass的YAML:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
  - debug
volumeBindingMode: Immediate

首先,每個StorageClass都會包含:

  • provisioner:用來決定要使用什麼plugin來製作PV,這邊的範例是AWS的EBS。
  • parameters:這邊用來填入各種plugin的自定義欄位。
  • reclaimPolicy:與PV的相同,用來定義當PVC被刪除時的行為。

再來看看剩下的欄位:

  • allowVolumeExpansion:是否允許PV和PVC擴張容量。
  • mountOptions:掛載選項,要看該plugin是否支援。
  • volumeBindingMode:決定何時要讓PVC和PV綁定,有分為兩種。
    • Immediate:PVC建立後立刻綁定。
    • WaitForFirstConsumer:直到Pod mounts PVC時才綁定,須確認plugin是否支援。

如何使用PVC?

昨天有提過怎麼建立PVC,那今天我們來看看當PVC被建立後,要如何使用~

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
    - name: test
      image: nginx
      volumeMounts:
        - name: config
          mountPath: /usr/share/nginx/html
          subPath: html
        - name: config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
  volumes:
    - name: config
      persistentVolumeClaim:
        claimName: test-nfs-claim

從上方的YAML我們可以發現一些特殊的欄位:

  • persistentVolumeClaim:代表這個Volume是PVC,claimName是PVC的Name。
  • subPath:當我們同時對一個PVC掛載到多個路徑,那我們可以用subPath來區分PVC中的位置。

參考資料

存储类

持久卷


上一篇
Day 18:Persistent Volumes
下一篇
Day 20:使用kubeadm建立集群 - 前置作業
系列文
30天準備CKA考試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言