AWSのEBSをKubernetesの永続ボリュームに追加する。

kubernetesのpodは基本的には永続ボリュームを持たず、変更を加えたとしてもpodの再起動が走ったタイミングでデータは消えます。

そのため、場合によっては保持しておくための永続ボリュームが必要となります。

podの定義に直接書き込む形で接続も可能ですが、今回はマニュフェストを使い、Presistent Volumeとして登録します。

登録方法

strage.yaml

apiVersion: "v1"
kind: "PersistentVolume"
metadata:
  name: "hogehoge"
spec:
  capacity:
    storage: "10Gi" #容量 
  accessModes:
    - "ReadWriteOnce"
  awsElasticBlockStore: 
    fsType: "ext4" 
    volumeID: "vol-XXXXXXXXXXXXXXXXXX"  #EBSボリュームID

上記のようにマニュフェストを作成、クラスターリソースに登録します。

# kubectl apply -f strage.yaml 

以下出力が出れば成功です。

persistentvolume/hogehoge created

getで確認してみます。

$ kubectl get pv 
NAME       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
hogehoge   10Gi       RWO            Retain           Available                                   13m

また、Kubernetes ウェブ UIにも項目があります。

永続ボリュームに登録されているのが確認できます。

マニュフェストでaccessModesをReadWriteOnceとしていますが、単一のノードからの読み込み書き込みが可能の設定です。

もし複数のノードから読み込みを行う場合にはReadOnlyManyが使用できます。

ReadWriteManyはEFSでならば使用できそうですが、EBSでは使用しないほうがよいでしょう。

Kubernetes PVC with ReadWriteMany on AWS