关于k8s:K8S使用阿里云存储卷

前言

最近在学习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/v1
kind: StorageClass
metadata:
  name: alicloud-nas-subpath
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: subpath
  server: "xxxxxxx.cn-hangzhou.nas.aliyuncs.com:/k8s/"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain

执行以下命令创立StorageClass。

kubectl create -f alicloud-nas-subpath.yaml

2、创立filesystem类型的StorageClass

alicloud-nas-fs.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas-fs
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: filesystem
  zoneId: "cn-hangzhou-g"
  vpcId: "vpc-xxxxxxxxxxxx"
  vSwitchId: "vsw-xxxxxxxxx"
  deleteVolume: "false"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain

执行以下命令创立StorageClass。

kubectl create -f alicloud-nas-fs.yaml

留神:如果不填写zoneId区域id,会报错

创立云盘存储卷

  1. 创立动态云盘存储卷

    • 步骤一:创立PV
    • 步骤二:创立PVC
    • 步骤三:创立利用。
  2. 创立动静云盘存储卷

    • 步骤一:创立StorageClass
    • 步骤二:创立PVC
    • 步骤三:创立利用

创立NAS存储卷

  1. 创立动态云盘存储卷

    • 步骤一:创立PV
    • 步骤二:创立PVC
    • 步骤三:创立利用。
  2. 创立动静云盘存储卷

    • 步骤一:创立StorageClass
    • 步骤二:创立PVC
    • 步骤三:创立利用

问题

1、Zone not exist 或者 InvaildZone.NotExist
通过命令查看pod报错

kubectl logs -n kube-system csi-provisioner-56f5c9d65d-2b82t -c external-nas-provisioner
kubectl logs deployment.apps/csi-provisioner -n kube-system

错误信息:

RequestId: E83FFC19-9A19-45E4-BC49-BC96810F4C3D
Message: 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.ServerError
ErrorCode: InvaildZone.NotExist
Recommend: https://error-center.aliyun.com/status/search?Keyword=InvaildZone.NotExist&source=PopGw


起因:创立NAS StorageClass的时候没有指定zoneId
解决:查看你的NAS所在区域对应的ZoneId

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas-fs
mountOptions:
  - nolock,tcp,noresvport
  - vers=3
parameters:
  volumeAs: filesystem
  #  指定zoneId
  zoneId: "cn-hangzhou-g"
  vpcId: "vpc-xxx"
  vSwitchId: "vsw-xxx"
  deleteVolume: "false"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain

总结

1、k8s能够应用云盘和NAS存储卷,然而云盘最低要20Gi,所以平时开发或者测试能够应用NAS存储卷
2、应用NAS要开明阿里云服务
3、动态创建存储卷更合乎日常工作

援用

长久卷
Kubernetes对象中的PersistentVolume、PersistentVolumeClaim和StorageClass的概念关系
阿里云查问可用的地区
阿里云盘存储卷概述
阿里云NAS存储卷概述

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理