【Kubernetes】ボリュームでsubPathを使ってみる
2022.08.22
2024.03.24
Kubernetes
PersistentVolumePersistentVolumeClaimsubPath
はじめに
KubernetesのsubPathについて紹介します。
subPath
subPath
は、1つのボリュームを複数のパスに分けてマウントできる機能です。
複数のパスに分けることで、1つのボリュームを複数の用途で使うことができます。
1apiVersion: v1
2kind: Pod
3metadata:
4 name: sample-subpath
5spec:
6 containers:
7 - name: busybox
8 image: busybox:latest
9 args:
10 - sleep
11 - "999"
12 volumeMounts:
13 - mountPath: /tmp
14 name: volume-subpath
15 subPath: busybox # ボリュームの中にbusyboxというディレクトリができる
16 volumes:
17 - name: volume-subpath
18 persistentVolumeClaim:
19 claimName: pvc-vol
実際に試してみる
実際にsubPath
を使ってみたいと思います。
ボリューム作成
まずはマウントするボリューム(volume.yml
)を用意します。
1apiVersion: v1
2kind: PersistentVolume
3metadata:
4 name: pv-vol
5spec:
6 capacity:
7 storage: 1Gi
8 accessModes:
9 - ReadWriteMany
10 persistentVolumeReclaimPolicy: Delete
11 storageClassName: manual
12 hostPath:
13 path: /tmp
14 type: Directory
15---
16apiVersion: v1
17kind: PersistentVolumeClaim
18metadata:
19 name: pvc-vol
20spec:
21 resources:
22 requests:
23 storage: 1Gi
24 accessModes:
25 - ReadWriteMany
26 storageClassName: manual
1kubectl apply -f volume.yml
Pod作成
用意したボリュームを3つのコンテナが含まれるPod(pod.yml
)でマウントします。
2つのコンテナはsubPath
を使い、1つはsubPath
を使わずマウントしてみます。
1apiVersion: v1
2kind: Pod
3metadata:
4 name: sample-subpath
5spec:
6 containers:
7 - name: container1
8 image: busybox:latest
9 args:
10 - sleep
11 - "999"
12 volumeMounts:
13 - mountPath: /tmp
14 name: volume-subpath
15 subPath: container1 # ボリュームのcontainer1にマウント
16 - name: container2
17 image: busybox:latest
18 args:
19 - sleep
20 - "999"
21 volumeMounts:
22 - mountPath: /tmp
23 name: volume-subpath
24 subPath: container2 # ボリュームのcontainer2にマウント
25 - name: container3
26 image: busybox:latest
27 args:
28 - sleep
29 - "999"
30 volumeMounts:
31 - mountPath: /tmp # subPathを使わずマウント
32 name: volume-subpath
33 volumes:
34 - name: volume-subpath
35 persistentVolumeClaim:
36 claimName: pvc-vol
1kubectl apply -f pod.yml
ボリュームの確認
まずはsubPath
でマウントしたcontainer1からマウントしたパスを確認してみると、普通にマウントした時と同様にPVがマウントされています。
1❯ kubectl exec -it sample-subpath -c container1 -- /bin/sh
2
3/ # ls /tmp
4
一方で、subPath
は使っていないが、他のコンテナでsubPath
を使ってマウントしていたボリュームをマウントしたコンテナから確認してみると、subPath
を設定していたディレクトリが作成されているのがわかります。
1❯ kubectl exec -it sample-subpath -c container3 -- /bin/sh
2
3/ # ls /tmp
4container1 container2
複数のディレクトリに分けてマウントすることで、1つのボリュームを複数の用途で利用できることがわかります。
参考
Share
関連記事
CKAD受験体験記
2022.07.06
【Kubernetes】Podのコンテナにアタッチ
2022.03.03