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"
}
}
セキュリティグループの作成
インバウンドルールの作成
EFSの作成
サンプルアプリをデプロイして動作確認
ドライバーのクローン
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