AWS – EKS 安装 EFS CSI插件

EFS和EBS的具体差别是,EFS能够跨zone,而EBS只能部署在单个zone而已,而且一个EBS只能绑定到单台ec2 worker node而已。如果你的EKS的多个worker node在多个不同的zone的话,会比较建议使用EFS作为你的persistent volume选择方案。

参考文章:https://blog.csdn.net/weixin_43832230/article/details/126786428?app_version=6.4.1&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22126786428%22%2C%22source%22%3A%22unlogin%22%7D&utm_source=app

【安装EFS CSI】

  1. 使用eksctl为EKS集群创建OIDC,如果已经创建了就无需进行这步骤
//把YourClusterName改成你的EKS集群名

eksctl utils associate-iam-oidc-provider --cluster YourClusterName --approve

2. 使用eksctl创建role和service account
参考文档:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/efs-csi.html

//把YourClusterName改成你的EKS集群名

export cluster_name=YourClusterName
export role_name=AmazonEKS_EFS_CSI_DriverRole
eksctl create iamserviceaccount \
    --name efs-csi-controller-sa \
    --namespace kube-system \
    --cluster $cluster_name \
    --role-name $role_name \
    --role-only \
    --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
    --approve
TRUST_POLICY=$(aws iam get-role --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \
    sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/')
aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"

3. 使用eksctl为eks集群安装EFS CSI插件,并且绑定第二步骤已经创建好的Role

参考文档:https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/managing-add-ons.html#creating-an-add-on

//把YourClusterName改成你的EKS集群名
//把1122233333改成你aws账号ID

eksctl create addon --cluster YourClusterName --name aws-efs-csi-driver --version latest --service-account-role-arn arn:aws:iam::1122233333:role/AmazonEKS_EFS_CSI_DriverRole --force

【StorageClass 创建绑定到EFS】

  1. 需要事前创建EFS并且为你的EKS worker node设定好Security Group, 让worker node能够连接到EFS当中 ,创建EFS的教程按这里
  2. 创建StorageClass绑定到EFS
    StorageClass对接EFS的parameter可以参考这文章:https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/README.md
YAML
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: efs-custom-storage1
provisioner: efs.csi.aws.com
parameters:
  provisioningMode: efs-ap
  fileSystemId: fs-92107410 # 你的EFS ID
  directoryPerms: "700" # chmod操作权限,700只有读写权限
  basePath: "/dynamic_provisioning" # 创建的访问点都将从这个基础路径开始
  subPathPattern: "${.PVC.namespace}/${.PVC.name}" # 每个 PVC 将有一个唯一的子路径
  ensureUniqueDirectory: "true" # 确保每个PVC都有一个唯一的目录。避免多个 PVC 使用相同的目录
  reuseAccessPoint: "true" # optional
reclaimPolicy: Retain
YAML

如果想要EBS CSI方案可以查看这文章:https://www.pangzai.win/aws-eks-%e5%ae%89%e8%a3%85-ebs-csi%e6%8f%92%e4%bb%b6/

Kubernetes存储方案,PV&PVC 可以查看这文章:https://www.pangzai.win/kubernetes-pv-pvc-storageclass%e8%ae%b2%e8%a7%a3/

Loading

Facebook评论