【Kubernetes】ボリュームでsubPathを使ってみる
2022.08.22
2024.03.24
はじめに
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: manual1kubectl apply -f volume.ymlPod作成
用意したボリュームを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-vol1kubectl 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
関連記事
【Kubernetes】YAML形式とJSON形式でオブジェクトを取得
2022.02.05
【Backstage】ローカルでKubernetesと連携してみる
2024.06.21
【Kubernetes】SOPSとageでSecretのマニフェストを暗号化
2025.03.21
【kubectl-neat】すっきりしたマニフェストを取得する
2023.12.09




