aws--efs---使用efs创建k8s的动态pvc
我们之前使用EBS作为k8s的动态pvc的pv,但是EBS不支持ReadWriteMany类型的声明。
所以尝试使用efs作为存储底层来声明pvc。
动态pvc声明方案
创建efs文件存储系统
使用命令
# 创建EFS Security group
VPC_ID=$(aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} --query "cluster.resourcesVpcConfig.vpcId" --output text)
VPC_CIDR=$(aws ec2 describe-vpcs --vpc-ids ${VPC_ID} --query "Vpcs[].CidrBlock" --region ${AWS_REGION} --output text)
aws ec2 create-security-group --description ${CLUSTER_NAME}-efs-eks-sg --group-name efs-sg --vpc-id ${VPC_ID}
SGGroupID=上一步的结果访问
aws ec2 authorize-security-group-ingress --group-id ${SGGroupID} --protocol tcp --port 2049 --cidr ${VPC_CIDR}# 创建EFS file system 和 mount-target, 请根据你的环境替换 FileSystemId, SubnetID, SGGroupID
aws efs create-file-system --creation-token eks-efs --region ${AWS_REGION}
aws efs create-mount-target --file-system-id FileSystemId --subnet-id SubnetID --security-group SGGroupID
也可以通过界面操作,步骤参考
利用 EFS 快速搭建 NFS 文件系统
安装efs驱动csi项目
这里需要借助 Amazon EFS CSI Driver项目,csi项目github地址
git clone https://github.com/kubernetes-sigs/aws-efs-csi-drivercd aws-efs-csi-driver-master/deploy/kubernetes/overlays/stablecat kustomization.yaml
当前版本内容如下:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
images:
- name: amazon/aws-efs-csi-drivernewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/aws-efs-csi-drivernewTag: v0.2.0
- name: quay.io/k8scsi/livenessprobenewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-liveness-probenewTag: v1.1.0
- name: quay.io/k8scsi/csi-node-driver-registrarnewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-node-driver-registrarnewTag: v1.1.0
需要修改如下:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
images:
- name: amazon/aws-efs-csi-drivernewTag: v0.3.0newName: amazon/aws-efs-csi-driver
- name: quay.io/k8scsi/livenessprobenewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-liveness-probenewTag: v1.1.0
- name: quay.io/k8scsi/csi-node-driver-registrarnewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-node-driver-registrarnewTag: v1.1.0
创建
kubectl create -k .kubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGE
alb-ingress-controller-649b854d75-m8c75 1/1 Running 0 2d18h
aws-node-ct6rz 1/1 Running 0 4d18h
aws-node-sfjtn 1/1 Running 0 3d21h
aws-node-xzfx9 1/1 Running 0 4d18h
coredns-6565755d58-pd5nm 1/1 Running 0 4d18h
coredns-6565755d58-v9nl7 1/1 Running 0 4d18h
ebs-csi-controller-6dcc4dc6f4-6k4s5 4/4 Running 0 2d17h
ebs-csi-controller-6dcc4dc6f4-vtklz 4/4 Running 0 2d17h
ebs-csi-node-2zmct 3/3 Running 0 2d17h
ebs-csi-node-plljf 3/3 Running 0 2d17h
ebs-csi-node-s9lbz 3/3 Running 0 2d17h
efs-csi-node-5jtlc 3/3 Running 0 10h
efs-csi-node-lqdz9 3/3 Running 0 10h
efs-csi-node-snqmh 3/3 Running 0 10h
kube-proxy-g4mcw 1/1 Running 0 4d18h
kube-proxy-mb88w 1/1 Running 0 4d18h
kube-proxy-tpx4x 1/1 Running 0 3d21h
kubernetes-dashboard-5f7b999d65-dcc6h 1/1 Running 0 2d23h
metrics-server-7fcf9cc98b-rntrh 1/1 Running 0 44hkubectl exec -ti efs-csi-node-5jtlc -n kube-system -- mount.efs --version
# Make sure the version is > 1.19
可能遇到的问题—Failed to resolve “fs-XXXXX.efs.cn-northwest-1.amazonaws.com” - check that your file system ID is correct
我们在创建efs的界面中其实可以看到 中国区的DNS是带有cn后缀的,比如:amazonaws.com.cn
eks-workshop-greater-china的文档中说v0.3.0不支持中国区,需要用v0.2.0。
https://github.com/kubernetes-sigs/aws-efs-csi-driver/issues/138 v0.2.0 image contains old version of efs-utils, efs-utils added China region support from v1.19 The v.0.3.0 does work, you can also build your image to use v.0.2.0 CSIv0.2.0版本的镜像中包含了老版本的efs-utils从v1.19增加对中国区的支持,但是v0.3.0是不起作用的,需要使用v0.2.0版本的镜像。
这个问题其实v0.3.0已经修复了,而且v0.2.0反而不支持中国区,目前下载的master的kustomization.yaml默认使用的就是v0.2.0,是会遇到问题的,无法转换出 带有cn后缀的 DNS路径,所以需要使用v0.3.0。
如上文使用v0.3.0的镜像即可
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
images:
- name: amazon/aws-efs-csi-drivernewTag: v0.3.0newName: amazon/aws-efs-csi-driver
- name: quay.io/k8scsi/livenessprobenewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-liveness-probenewTag: v1.1.0
- name: quay.io/k8scsi/csi-node-driver-registrarnewName: 602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/csi-node-driver-registrarnewTag: v1.1.0
详情参考链接:
support EFS in china regions
解决方案
as v0.3.0 is released: https://github.com/kubernetes-sigs/aws-efs-csi-driver/releases/tag/v0.3.0
Please use amazon/aws-efs-csi-driver:v0.3.0
The endpoints in China region are different from others
部署样例测试
## Deploy app use the EFS
cd examples/kubernetes/multiple_pods/
aws efs describe-file-systems --query "FileSystems[*].[FileSystemId,Name]" --region ${AWS_REGION} --output text# 修改 the specs/pv.yaml file and replace the volumeHandle with FILE_SYSTEM_ID
# 例子:
#csi:
# driver: efs.csi.aws.com
# volumeHandle: fs-9c21a999# 部署 the efs-sc storage class, efs-claim pv claim, efs-pv, and app1 and app2 sample applications.
kubectl apply -f specs/kubectl describe storageclass efs-sc
kubectl get pv
kubectl describe pv efs-pv
kubectl get pods --watch
kubectl get events# 验证
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt# 清理
kubectl delete -f specs/
静态pvc声明方案
pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: pv0001
spec:capacity:storage: 1GiaccessModes:- ReadWriteOncenfs:path: /tmpserver: 172.17.0.2persistentVolumeReclaimPolicy: Retain #Here is policyclaimRef: #Here is claim referencename: claim1namespace: default
pvc.yaml
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:name: "claim1"
spec:accessModes:- "ReadWriteOnce"resources:requests:storage: "1Gi"volumeName: "pv0001"
参考资料
步骤6 配置使用EFS
How do I use Amazon EFS with Amazon EKS
eks+ efs 在 Amazon EKS 上使用 Kubeflow 进行分布式 TensorFlow 训练
Persistent Volumes
pv and pvc - kube- efs
aws--efs---使用efs创建k8s的动态pvc相关推荐
- AWS EKS 创建k8s生产环境实例
#AWS EKS 创建k8s生产环境实例 在AWS部署海外节点, 图简单使用web控制台创建VPC和k8s集群出错(k8s), 使用cli命令行工具创建成功 本实例为复盘, 记录aws命令行工具创建e ...
- kubeadm创建k8s集群(1.14.2版本)
kubeadm创建k8s集群 1,环境准备 1.1,网络规划 节点名称 IP地址 角色 安装工具 k8s-master-01 172.16.2.101 master kubeadm.kubelet.k ...
- 在AWS中国区使用kops安装k8s完全指南
原文链接:http://blog.geekidentity.com/k8s/kops/install-k8s-with-kops-in-china/ 因为一些众所周知的原因,AWS中国区并没有k8s集 ...
- eclipse 创建maven 项目 动态web工程完整示例
需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...
- linux 动态链接库的创建和使用--动态连接
linux 动态链接库的创建和使用--动态连接 分类: C 编程 2012-03-25 17:01 568人阅读 评论(0) 收藏 举报 linuxreferencefunctiondatec /* ...
- c 调用c语言写的dll文件路径,手把手教你用C/C++语言创建及调试动态库DLL程序
引子 动态链接库DLL文件不仅可以实现代码.资源和数据的共享,同时也可以对源代码起保护作用,对于开发者来讲,DLL的生成及调试是程序员必须掌握的一种技术,下面通过一个具体的例子,演示使用C/C++语言 ...
- 使用Kubeadm创建k8s集群之节点部署(三十二)
前言 由于上次忘开申明原创,特再发一次. 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜 ...
- 使用Kubeadm创建k8s集群之部署规划(三十一)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- C++中使用模板,new创建2维动态数组
1 // 使用模板和new创建2维动态数组 2 3 #include<iostream> 4 #include<exception> 5 #include<cstdlib ...
最新文章
- 2021全国高校计算机能力挑战赛(初赛)C语言试题四
- 编程中python怎么读-对Python新手编程过程中如何规避一些常见问题的建议
- 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )
- 第7章 PCA与梯度上升法
- python学习笔记(六)——函数的作用域和装饰器
- 加密托管服务商Unchained Capital完成550万美元融资,NYDIG领投
- 2021年中国云无线接入网(C-RAN)市场趋势报告、技术动态创新及2027年市场预测
- 设计模式的征途—4.抽象工厂(Abstract Factory)模式
- 引入react文件报错_React Native常见问题(一)
- ASA REST API安装步骤
- 关于翻译书籍版权的讨论
- xsd文件转图片_原来华为手机能一键将图片转为PDF,实在太方便啦!你还不会吗?...
- vector容器——赋值操作
- VS2008 ~ VS2019下载地址
- 微型计算机控制赖寿宏pdf,微型计算机控制技术答案(赖寿宏).pdf
- 【推荐】四款数据库可视化操作工具
- 利用stm32串口中断进行数码管显示
- 软件使用-历史足迹-01
- 年薪50万的程序员_2018年这类程序员工资最高!年薪50万只能算一般
- MATLAB求解导弹运动的一些基础方法
热门文章
- Python教你秒懂:啥是佩奇?
- RuntimeWarning: Glyph 35745 missing from current font
- FAQ and discussed with adam
- C语言中双下划线的用法__FILE__
- mysql chroot_centos构建chroot环境
- 工作多年一直无法晋升,有啥破解之道?
- [Golang]搭建gdb调试go程序
- 详解java中println输出字符串
- 人工智能体验之为你写诗应用
- 数据透视表 筛选_筛选器选择中的数据透视图标题