Help us understand the problem. What is going on with this article?

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

More than 3 years have 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

suzukihi724
各種備忘録
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away