Edited at

kubernetes: pod(コンテナ)のディスク(volume)とパス(path)の指定方法

More than 1 year has passed since last update.

コンテナを起動する際、dockerの場合はdocker runコマンドのオプションで色々指定できるが、kubernetesの場合は、pod(またはreplication controller)作成時に指定するyaml/jsonで規定する。

kubernetesでコンテナ(pod)を作成する際の、データの格納場所(volume)を指定する方法を記載する。

コンテナ(Pod)が死んでしまうと、データが消滅してしまうので、Volumeに格納しておく事で、状態を維持できる。

タイプは様々提供されている。

•emptyDir

•hostPath

•gcePersistentDisk

•awsElasticBlockStore

ほか

emptyDirは、Pod単位の仮想ボリュームで、Podがdeleteされると同時にデータも削除される。

hostPathは、ホストサーバ上のDiskにマウントする方式。ホストサーバ上のデータにアクセスしたい場合等に利用。

gcePersistentDiskは、Google Compute Engine (GCE) Persistent Disk をマウントする用。

awsElasticBlockStoreは、Amazon Web Services (AWS) EBS Volume をマウントする用。

Podに紐づけずデータを保持したい場合はhostPath等を指定する。

Pod yaml (EmptyDir) 例)

apiVersion: v1

kind: ReplicationController
metadata:
name: redis
spec:
template:
metadata:
labels:
app: redis
tier: backend
spec:
# Provision a fresh volume for the pod
volumes:
- name: data
emptyDir: {}
containers:
- name: redis
image: kubernetes/redis:v1
ports:
- containerPort: 6379
# Mount the volume into the pod
volumeMounts:
- mountPath: /redis-master-data
name: data # must match the name of the volume, above

specの中にvolume:でタイプと名称を指定する。さらにcontainers:volumeMounts:で実際のPathを指定する。

参考

http://kubernetes.io/v1.1/docs/user-guide/volumes.html

http://kubernetes.io/v1.1/docs/user-guide/production-pods.html