- クラウド技術
EKS永続ボリューム設定方法
- #Kubernetes
- #AWS
目次
目的
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
K8Sはデータを保持することが出来ないため、データを保持する場合は永続ボリュームを使用する必要がある。
今回は永続ボリュームにEFSを使用する方法を記載する。
前提
- AWS上でEFSが作成済みであること
- AWS上でEKSが作成済みであること
- kubectlコマンドが実行可能であること
EFSでマウント先のディレクトリを作成する。
- EFSに接続できるEC2にSSHでログインして、EFSのマウント先を作成する。
1<span>sudo mkdir efs</span> - EFSをマウントする。
1<span>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</span>※
fs-XXXXX
の部分は自分の環境に合わせて変更する - EFSにK8Sからマウントするディレクトリを作成する。
1<span>sudo mkdir /mnt/efs/data</span>
EKSにEFSのCSIドライバーをインストールする
- kubectlコマンドが使用可能な端末にSSHログインして、以下のコマンドドライバーをインストールする。
1<span>kubectl apply -k 'github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.1'</span> - 以下のコマンドでドライバーが起動しているか確認する。
1kubectl get po -n kube-system
EKSでマウント先ボリュームの定義を作成する。
- PersistentVolume用のyamlファイルを作成する。
作成ファイル:test-pv-volume.yaml12345678910111213141516kind: PersistentVolumeapiVersion: v1metadata:name: test-pv-volumenamespace: testspec:storageClassName: testcapacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: Retaincsi:driver: efs.csi.aws.comvolumeHandle: fs-XXXXX:/data※
fs-XXXXX
の部分は自分の環境に合わせて変更する - kubectlコマンドでボリューム定義を作成する。
1kubectl apply -f test-pv-volume.yaml - PersistentVolumeClaim用のyamlファイルを作成する。
作成ファイル:test-pv-claim.yaml
123456789101112apiVersion: v1kind: PersistentVolumeClaimmetadata:name: test-pv-claimnamespace: testspec:storageClassName: testaccessModes:- ReadWriteManyresources:requests:storage: 5Gi - kubectlコマンドでボリューム要求定義を作成する。
1<span>kubectl apply -f test-pv-claim.yam</span>
K8SにリリースしたアプリからEFSをマウントする。
- kubectlコマンドが使用可能な端末にSSHログインして確認のため、nginxの「/usr/share/nginx/html」をマウントしたyamlファイルを作成する。
作成ファイル:test-deployment.yaml
123456789101112131415161718192021222324apiVersion: apps/v1kind: Deploymentmetadata:name: test-deploymentnamespace: testspec:selector:matchLabels:app: testtemplate:metadata:labels:app: testspec:containers:- name: testimage: nginx:latestvolumeMounts:- name: test-persistent-storagemountPath: /usr/share/nginx/htmlvolumes:- name: test-persistent-storagepersistentVolumeClaim:claimName: test-pv-claim - kubectlコマンドでnginxをデプロイする
1<span>kubectl apply -f test-deployment.yaml</span> - EFSに接続できるEC2にSSHでログインして、EFSのマウント先に適当にファイルを作成する。
1<span>sudo vi /mnt/efs/data/index.html</span>
作成ファイル:index.html
1<span>hello eks</span> - kubectlコマンドが使用可能な端末にSSHログインして、先ほどデプロイしたPodに入る。
1<span>kubectl exec -it test-deployment-55c766d78d-fxgt5 /bin/bash -n test</span>※
test-deployment-55c766d78d
の部分は各環境に合わせて変更する - Pod内で以下のコマンドを実行し、「hello eks」が表示されれば確認完了。
1<span>curl localhost</span>>hello eks
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>