前提条件
私有云内网与阿里云的VPC互通
配置文件下载
首先下载阿里云提供的alibaba-cloud-csi-driver
在deploy
文件夹下,找到rbac.yaml
,这个文件用于配置csi插件的rbac权限,
找到deploy/nas
文件夹,其中配置文件为nas-plugin-dedicated.yaml
以及nas-provisioner-dedicated.yaml
注意: 原文件夹中有两套不同的配置,根据阿里云官方的解释,在私有云采用阿里云的NAS应该使用dedicated
修改部分配置
要在私有云使用阿里云的csi插件,还需要声明csi-node的nodeid,在非阿里云的机器中,我们需要额外设置hostname作为nodeid
配置方法
nas-plugin-dedicated.yaml:
1 | image: registry.cn-hangzhou.aliyuncs.com/acs/csi-plugin:v1.16.9.43-f36bb540-aliyun |
nas-provisioner-dedicated.yaml:
1 | image: registry.cn-hangzhou.aliyuncs.com/acs/csi-plugin:v1.16.9.43-f36bb540-aliyun |
安装CSI插件
1 | kubectl apply -f rbac.yaml |
kubernetes 1.20版本后适配问题
在较高版本(1.20+)的kubernetes中使用阿里云的CSI插件会出现selfLink was empty, can't make reference
报错,原因是kubernetes 1.20版本后禁用了SelfLink
根据工单,阿里云官方的解释是CSI插件 1.1.4以后的版本适配1.20
当时的解决方案
在kube-apiserver 的yaml文件中添加启动参数--feature-gates=RemoveSelfLink=false
,重新apply后生效
使用阿里云NAS作为storageClass
1 | apiVersion: storage.k8s.io/v1 |
参数 | 描述 |
---|---|
mountOptions | 挂载NAS的options参数在mountOptions中配置,包括NFS协议版本。 |
volumeAs | 可选subpath、filesystem,分别表示创建子目录类型的PV和文件系统类型PV。 |
server | 表示创建子目录类型的PV时,NAS文件系统的挂载点地址。 |
provisioner | 驱动类型。本例中取值为nasplugin.csi.alibabacloud.com ,表示使用阿里云NAS CSI插件。 |
reclaimPolicy | PV的回收策略,默认为Delete,支持Retain。Delete模式:删除PVC的时候,PV和NAS文件系统会一起删除。Retain模式:删除PVC的时候,PV和NAS文件系统不会被删除,需要您手动删除。如果数据安全性要求高,推荐使用Retain方式以免误删数据。 |
archiveOnDelete | 表示在reclaimPolicy为Delete时,是否删除后端存储。因为NAS为共享存储,添加此选项进行双重确认。在参数parameters下配置。默认为true,表示不会真正删除目录或文件,而是将其Rename,格式为:archived-{pvName}.{timestamp} ;如果是配置为false,表示会真正删除后端对应的存储资源。 |