hostPathボリュームは、ホストノードのファイルシステムからポッドにファイルまたはディレクトリをマウントします。 このトピックでは、hostPathボリュームをポッドにマウントする方法について説明します。
背景情報
Container Service For Kubernetes (ACK) が提供するhostPathボリュームのマウントソリューションの詳細については、「HostPath」をご参照ください。
ボリュームマウントモード
hostPathボリュームは、次のモードでマウントできます。
ボリュームマウントモード | 説明 |
DirectoryOrCreate | このモードでは、指定したパスにコンテンツが見つからない場合、オンデマンドで空のディレクトリが作成されます。 作成されたディレクトリに対する権限は0755に設定されています。 ディレクトリは、kubeletと同じグループと所有権を持ちます。 |
ディレクトリ | したがって、指定したパスにディレクトリが存在する必要があります。 |
FileOrCreate | このモードでは、指定したパスにコンテンツが見つからない場合、空のファイルが作成されます。 作成したファイルの権限を0644に設定します。 ファイルはkubeletと同じグループと所有権を持ちます。 |
ファイル | このモードでは、指定したパスにファイルが存在する必要があります。 |
例
次のテンプレートを使用して、
hostPath
ボリュームをポッドに直接マウントします:apiVersion: v1 kind: Pod metadata: name: test spec: containers: - image: nginx:1.7.9 name: test volumeMounts: - mountPath: /test name: test-volume volumes: - name: test-volume hostPath: path: /data type: DirectoryOrCreate
hostPath
ボリュームを永続ボリューム (PV) としてプロビジョニングすることもできます。 次に、永続ボリューム要求 (PVC) を作成して、PVをポッドにマウントできます。apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume labels: type: local spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: hostpath spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
hostPathボリュームを実行中のポッドにマウントします。
Kubernetesでは、ポッドの実行開始後、ポッドにマウントされているPVを変更することはできません。 実行中のポッドに外部ボリュームを動的にマウントする必要がある場合は、次の手順を実行します。
説明この方法は、Linuxが提供するマウント伝播機能を使用します。 hostPathボリュームをポッドにマウントするときは、mountPropagationフィールドをBidirectionalとして指定する必要があります。 これにより、ホストノード上のディレクトリがポッド内のコンテナに伝播されます。
ポッドは特権モードで実行されている必要があります。 これは、mountPropagationをBidirectionalに設定する場合に必要です。
ポッドは、ホストノードのファイルシステムのディレクトリでマウントする必要があります。 これにより、ポッド内で実行中のコンテナーは、このディレクトリへの後続のマウントをすべて受け取ることができます。
次のテンプレートを使用して、hostPathボリュームがマウントされているNGINXアプリケーションを作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nas labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 command: ["sh", "-c"] args: ["sleep 10000"] securityContext: privileged: true capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true volumeMounts: - name: dynamic-volume mountPropagation: "Bidirectional" mountPath: "/dynamic-volume" volumes: - name: dynamic-volume hostPath: path: /mnt/dynamic-volume type: DirectoryOrCreate
説明ホストノードのディレクトリ: /mnt/dynamic-volume
ポッド内のマウントパス: /dynamic-volume。
上記の構成では、ホストノードの /mnt/dynamic-volume/**** ディレクトリを対象とする外部マウントが、/mnt/dynamic-volumeディレクトリのhostPathボリュームでマウントされているポッドに伝達されます。 これにより、実行中のポッドに外部ボリュームを動的にマウントできます。