LinuCエヴァンジェリスト・Open Source Summit Japanボランティアリーダーの鯨井貴博@opensourcetechです。
はじめに
Kubernetes volume機能のhostPathを使ったデータ共有に関するメモです。
やってみる
早速、やってみます。
root@rke2-1:~# cat pod10.yaml apiVersion: v1 kind: Pod metadata: name: testweb spec: containers: - name: testweb image: nginx volumeMounts: - mountPath: /tmp/aaa name: mydir - mountPath: /tmp/aaa/1.txt name: myfile volumes: - name: mydir hostPath: path: /tmp/aaa type: DirectoryOrCreate - name: myfile hostPath: path: /tmp/aaa/1.txt type: FileOrCreate root@rke2-1:~# kubectl create -f pod10.yaml pod/testweb created root@rke2-1:~# kubectl get pod NAME READY STATUS RESTARTS AGE testweb 1/1 Running 0 4s
では、実際に/tmp/aaaというディレクトリと1.txtというファイルが出来ているか確認。
root@rke2-1:~# kubectl exec -it testweb -- sh -c /bin/bash root@testweb:/# cd /tmp root@testweb:/tmp# ls aaa root@testweb:/tmp# cd aaa root@testweb:/tmp/aaa# ls 1.txt root@testweb:/tmp/aaa# exit exit
ありますね!
おまけ:hostPathに関する情報
root@rke2-1:~# kubectl explain pods.spec.volumes.hostPath KIND: Pod VERSION: v1 FIELD: hostPath <HostPathVolumeSource> DESCRIPTION: hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling. FIELDS: path <string> -required- path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath type <string> type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath Possible enum values: - `""` For backwards compatible, leave it empty if unset - `"BlockDevice"` A block device must exist at the given path - `"CharDevice"` A character device must exist at the given path - `"Directory"` A directory must exist at the given path - `"DirectoryOrCreate"` If nothing exists at the given path, an empty directory will be created there as needed with file mode 0755, having the same group and ownership with Kubelet. - `"File"` A file must exist at the given path - `"FileOrCreate"` If nothing exists at the given path, an empty file will be created there as needed with file mode 0644, having the same group and ownership with Kubelet. - `"Socket"` A UNIX socket must exist at the given path
参照本家サイト
https://kubernetes.io/docs/concepts/storage/volumes/