- クラウド技術
EKS永続ボリューム設定方法
- #Kubernetes
- #AWS

目次
目的
K8Sはデータを保持することが出来ないため、データを保持する場合は永続ボリュームを使用する必要がある。
今回は永続ボリュームにEFSを使用する方法を記載する。
前提
- AWS上でEFSが作成済みであること
- AWS上でEKSが作成済みであること
- kubectlコマンドが実行可能であること
EFSでマウント先のディレクトリを作成する。
- EFSに接続できるEC2にSSHでログインして、EFSのマウント先を作成する。
sudo mkdir efs
- EFSをマウントする。
sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-XXXXX.efs.ap-northeast-1.amazonaws.com:/ /mnt/efs
※
fs-XXXXX
の部分は自分の環境に合わせて変更する - EFSにK8Sからマウントするディレクトリを作成する。
sudo mkdir /mnt/efs/data
EKSにEFSのCSIドライバーをインストールする
- kubectlコマンドが使用可能な端末にSSHログインして、以下のコマンドドライバーをインストールする。
kubectl apply -k 'github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.1'
- 以下のコマンドでドライバーが起動しているか確認する。
kubectl get po -n kube-system
EKSでマウント先ボリュームの定義を作成する。
- PersistentVolume用のyamlファイルを作成する。
作成ファイル:test-pv-volume.yamlkind: PersistentVolume apiVersion: v1 metadata: name: test-pv-volume namespace: test spec: storageClassName: test capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: efs.csi.aws.com volumeHandle: fs-XXXXX:/data
※
fs-XXXXX
の部分は自分の環境に合わせて変更する - kubectlコマンドでボリューム定義を作成する。
kubectl apply -f test-pv-volume.yaml
- PersistentVolumeClaim用のyamlファイルを作成する。
作成ファイル:test-pv-claim.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pv-claim namespace: test spec: storageClassName: test accessModes: - ReadWriteMany resources: requests: storage: 5Gi
- kubectlコマンドでボリューム要求定義を作成する。
kubectl apply -f test-pv-claim.yam
K8SにリリースしたアプリからEFSをマウントする。
- kubectlコマンドが使用可能な端末にSSHログインして確認のため、nginxの「/usr/share/nginx/html」をマウントしたyamlファイルを作成する。
作成ファイル:test-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: test-deployment namespace: test spec: selector: matchLabels: app: test template: metadata: labels: app: test spec: containers: - name: test image: nginx:latest volumeMounts: - name: test-persistent-storage mountPath: /usr/share/nginx/html volumes: - name: test-persistent-storage persistentVolumeClaim: claimName: test-pv-claim
- kubectlコマンドでnginxをデプロイする
kubectl apply -f test-deployment.yaml
- EFSに接続できるEC2にSSHでログインして、EFSのマウント先に適当にファイルを作成する。
sudo vi /mnt/efs/data/index.html
作成ファイル:index.html
hello eks
- kubectlコマンドが使用可能な端末にSSHログインして、先ほどデプロイしたPodに入る。
kubectl exec -it test-deployment-55c766d78d-fxgt5 /bin/bash -n test
※
test-deployment-55c766d78d
の部分は各環境に合わせて変更する - Pod内で以下のコマンドを実行し、「hello eks」が表示されれば確認完了。
curl localhost
>hello eks