前言
最近在学习k8s,并且应用了阿里云ACK的K8S集群,学到存储卷时,发现阿里云有三种解决方案:1、云盘,2、NAS,3、OSS,上面就来解说下云盘和NAS在K8S中应用办法,前面有工夫再出个OSS教程。
筹备
- 阿里云ACK k8s集群
k8s存储卷概述
存储卷相干技术,官网文档
存储卷PVC:PersistentVolumeClaim存储卷申明PV:PersistentVolume存储卷类SC:StorageClass
这里有篇博客写得十分好,大家有工夫能够看看它们之间的区别,本文不是解说这些概念而是应用它们
应用形式
什么是动态创立存储卷?
所谓动态就是通过yaml文件先创立PV,而后创立PVC,再通过创立的Deployment或者StatefulSet去指定PVC。
什么是动态创建存储卷?
所谓动静就是通过创立SC,而后创立PVC并且指定了SC,零碎就会主动创立PV,因而理论生产中更多的应用动态创建。
上面咱们也是着重解说如何动态创建存储卷。
阿里云反对的存储卷
1、云盘
如果想要创立动静存储卷必须先要创立StorageClass,上面是阿里云盘提供的以下几种StorageClass:
alicloud-disk-efficiency:高效云盘。alicloud-disk-ssd:SSD云盘。alicloud-disk-essd:ESSD云盘。alicloud-disk-available:提供高可用选项,优先创立SSD云盘;如果SSD云盘售尽,则创立高效云盘alicloud-disk-topology: 应用提早绑定的形式创立云盘
存储大小限度:
最低20Gi
2、NAS
因为NAS跟云盘还不一样,要到阿里云控制台手动开明服务,开明之后能力应用,还有NAS没有自带SC,要本人通过yaml文件创建。
反对协定:
通用型:NFSv3(Linux)/NFSv4(Linux)/SMB2.1+(Windows)极速型:NFSv3(Linux)文件存储 CPFS:POSIX/MPI-IO(Linux)
阿里云Kubernetes CSI反对2种类型的NAS动静存储卷挂载:subpath形式和filesystem形式
subpath类型的NAS动静存储卷当您的多个Kubernetes利用或者Pod须要挂载雷同的NAS存储卷共享数据时,或不同的Pod挂载雷同NAS文件系统的不同子目录时, 能够应用subpath类型的NAS动静存储卷形式。filesystem类型的NAS动静存储卷当您的Kubernetes利用须要动态创建和删除NAS文件系统和挂载点时, 能够应用filesystem类型。
上面就来解说应用filesystem类型创立NAS存储卷。
存储大小限度:
- 无限度
3、OSS
略
创立NAS StorageClass
下面讲到NAS没有自带的SC须要手动通过yaml文件来创立,所以当初咱们来创立一下,依据官网文档来创立
1、创立subpath类型的StorageClass
alicloud-nas-subpath.yaml
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: alicloud-nas-subpathmountOptions:- nolock,tcp,noresvport- vers=3parameters: volumeAs: subpath server: "xxxxxxx.cn-hangzhou.nas.aliyuncs.com:/k8s/"provisioner: nasplugin.csi.alibabacloud.comreclaimPolicy: Retain
执行以下命令创立StorageClass。
kubectl create -f alicloud-nas-subpath.yaml
2、创立filesystem类型的StorageClass
alicloud-nas-fs.yaml
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: alicloud-nas-fsmountOptions:- nolock,tcp,noresvport- vers=3parameters: volumeAs: filesystem zoneId: "cn-hangzhou-g" vpcId: "vpc-xxxxxxxxxxxx" vSwitchId: "vsw-xxxxxxxxx" deleteVolume: "false"provisioner: nasplugin.csi.alibabacloud.comreclaimPolicy: Retain
执行以下命令创立StorageClass。
kubectl create -f alicloud-nas-fs.yaml
留神:如果不填写zoneId区域id,会报错
创立云盘存储卷
创立动态云盘存储卷
- 步骤一:创立PV
- 步骤二:创立PVC
- 步骤三:创立利用。
创立动静云盘存储卷
- 步骤一:创立StorageClass
- 步骤二:创立PVC
- 步骤三:创立利用
创立NAS存储卷
创立动态云盘存储卷
- 步骤一:创立PV
- 步骤二:创立PVC
- 步骤三:创立利用。
创立动静云盘存储卷
- 步骤一:创立StorageClass
- 步骤二:创立PVC
- 步骤三:创立利用
问题
1、Zone not exist 或者 InvaildZone.NotExist
通过命令查看pod报错
kubectl logs -n kube-system csi-provisioner-56f5c9d65d-2b82t -c external-nas-provisionerkubectl logs deployment.apps/csi-provisioner -n kube-system
错误信息:
RequestId: E83FFC19-9A19-45E4-BC49-BC96810F4C3DMessage: Zone not exist Warning ProvisioningFailed 10m nasplugin.csi.alibabacloud.com_awbeci-nexus_b88f4540-2802-409e-b178-9f7a37e99191 failed to provision volume with StorageClass "alicloud-nas-fs": rpc error: code = Internal desc = SDK.ServerErrorErrorCode: InvaildZone.NotExistRecommend: https://error-center.aliyun.com/status/search?Keyword=InvaildZone.NotExist&source=PopGw
起因:创立NAS StorageClass的时候没有指定zoneId
解决:查看你的NAS所在区域对应的ZoneId
apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: alicloud-nas-fsmountOptions: - nolock,tcp,noresvport - vers=3parameters: volumeAs: filesystem # 指定zoneId zoneId: "cn-hangzhou-g" vpcId: "vpc-xxx" vSwitchId: "vsw-xxx" deleteVolume: "false"provisioner: nasplugin.csi.alibabacloud.comreclaimPolicy: Retain
总结
1、k8s能够应用云盘和NAS存储卷,然而云盘最低要20Gi,所以平时开发或者测试能够应用NAS存储卷
2、应用NAS要开明阿里云服务
3、动态创建存储卷更合乎日常工作
援用
长久卷
Kubernetes对象中的PersistentVolume、PersistentVolumeClaim和StorageClass的概念关系
阿里云查问可用的地区
阿里云盘存储卷概述
阿里云NAS存储卷概述