LoginSignup
2
3

More than 3 years have passed since last update.

AWS EKSでPersistentVolumeClaim経由でEFSを使う

Last updated at Posted at 2019-10-21

Amazon EFSCSI ドライバー

EKSからEFSを操作するためのツール的な?

参考

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/storage-classes.html
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/efs-csi.html

StorageClassがデプロイされているか確認

1.14以降であればデフォルトでデプロイされている
未満であれば、上記URLから手動でデプロイする必要がある

kubectl get storageclass

出力結果

NAME            PROVISIONER             AGE
gp2 (default)   kubernetes.io/aws-ebs   11h

EFSCSIドライバーをデプロイ

kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"

DeamonSetがデプロイされているか確認

kubectl get daemonsets efs-csi-node --namespace=kube-system

出力結果

NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
efs-csi-node   2         2         0       2            0           beta.kubernetes.io/os=linux   91s

CSIドライバーがデプロイされているか確認

kubectl get csidrivers.storage.k8s.io

出力けっか

NAME              CREATED AT
efs.csi.aws.com   2019-10-27T08:08:04Z

EKSが動作しているVPCIDを確認

aws eks describe-cluster --name k8s-cluster --query cluster.resourcesVpcConfig.vpcId --output text

出力結果

vpc-059ad19ca888486c4

IP範囲(CIDRブロック)を確認

aws ec2 describe-vpcs --vpc-ids vpc-059ad19ca888486c4

出力結果

            "CidrBlockAssociationSet": [
                {
                    "AssociationId": "vpc-cidr-assoc-0a2a4f054ca33b5f0",
                    "CidrBlock": "192.168.0.0/16",
                    "CidrBlockState": {
                        "State": "associated"
                    }
                }

セキュリティグループの作成

image.png

インバウンドルールの作成

image.png

EFSの作成

image.png

サンプルアプリをデプロイして動作確認

ドライバーのクローン

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

ディレクトリ移動

cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/

ファイルシステムID確認

aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text

出力結果

fs-32b4854b

pv.yamlのvolumeHandleを上記のファイルシステムIDへ変更

specs/pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: efs-pv
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: efs-sc
  csi:
    driver: efs.csi.aws.com
    volumeHandle: fs-32b4854b

pv,pvc.storageclass,sampleappデプロイ

kubectl apply -f specs/

出力結果

persistentvolumeclaim/efs-claim created
pod/app1 created
pod/app2 created
persistentvolume/efs-pv created
storageclass.storage.k8s.io/efs-sc created

pvがデプロイされているか確認

kubectl get pv

出力結果

NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS   REASON   AGE
efs-pv   5Gi        RWX            Retain           Bound    default/efs-claim   efs-sc                  93s

pvの詳細情報表示

kubectl describe pv efs-pv

出力結果
EFSファイルシステムはVolumeHandleで表示

Name:            efs-pv
Labels:          <none>
Annotations:     kubectl.kubernetes.io/last-applied-configuration:
                   {"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{},"name":"efs-pv"},"spec":{"accessModes":["ReadWriteMany"],"capaci...
                 pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    efs-sc
Status:          Bound
Claim:           default/efs-claim
Reclaim Policy:  Retain
Access Modes:    RWX
VolumeMode:      Filesystem
Capacity:        5Gi
Node Affinity:   <none>
Message:
Source:
    Type:              CSI (a Container Storage Interface (CSI) volume source)
    Driver:            efs.csi.aws.com
    VolumeHandle:      fs-32b4854b
    ReadOnly:          false
    VolumeAttributes:  <none>
Events:                <none>

Podがボリュームにデータを書き込んでいるかを確認

kubectl exec -ti app1 -- tail /data/out1.txt

出力結果

Mon Oct 21 02:44:10 UTC 2019
Mon Oct 21 02:44:15 UTC 2019
Mon Oct 21 02:44:20 UTC 2019
Mon Oct 21 02:44:25 UTC 2019
Mon Oct 21 02:44:30 UTC 2019
Mon Oct 21 02:44:35 UTC 2019
Mon Oct 21 02:44:40 UTC 2019
Mon Oct 21 02:44:45 UTC 2019
Mon Oct 21 02:44:50 UTC 2019
Mon Oct 21 02:44:55 UTC 2019

Pod2もついでに確認しておく

kubectl exec -ti app2 -- tail /data/out1.txt
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3