阿里云NAS存储部署简介

这篇具有很好参考价值的文章主要介绍了阿里云NAS存储部署简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近期在阿里云上部署OCP需要用到NAS,其中遇到NAS无法扩容的问题,在此简单笔记。

1、部署NAS

参照github.com\kubernetes-sigs\alibaba-cloud-csi-driver\docs\nas.md部署说明,需要执行以下步骤:

Step 1: Create RBAC resource

# kubectl create -f ./deploy/rbac.yaml

Step 2: Create CSI Plugin

# kubectl create -f ./deploy/nas/nas-plugin.yaml

Step 3: Create CSI Plugin

# kubectl create -f ./deploy/nas/nas-provisioner.yaml

执行完以上步骤,会在kube-system下面部署一个daemonset csi-plugin和一个deployment csi-provisioner。

这时还缺少SC,在github.com\kubernetes-sigs\alibaba-cloud-csi-driver\examples\nas\dynamic目录可以找到所需的SC文件,按需修改直接部署即可。

到此,通过创建PVC实现NAS申请已能够实现。

2 NAS扩容

在修改PVC进行扩容时却发现提示不支持,问题主要有两点,但阿里云官方文档当前未见详细说明。

(1)SC缺少allowVolumeExpansion: true字段,会提示“only dynamically provisioned pvc can be resized”,SC中加上即可。

(2)SC加上允许扩容后,PVC是可以被更新了,但等了很久发现实际容量并未被更新。排查如下:

检查源码github.com\kubernetes-sigs\alibaba-cloud-csi-driver\pkg\nas\controllerserver.go,发现是有扩容方法的。

func (cs *controllerServer) ControllerExpandVolume(ctx context.Context, req *csi.ControllerExpandVolumeRequest,
) (*csi.ControllerExpandVolumeResponse, error) {
	log.Infof("ControllerExpandVolume: starting to expand nas volume with %v", req)
	volSizeBytes := int64(req.GetCapacityRange().GetRequiredBytes())
	pvObj, err := getPvObj(req.VolumeId)
	if err != nil {
		return nil, fmt.Errorf("ControllerExpandVolume: nas volume(%s) expand error: %s", req.VolumeId, err.Error())
	}
	if _, ok := pvObj.Spec.CSI.VolumeAttributes["volumeCapacity"]; ok {
		err = setNasVolumeCapacityWithID(pvObj, cs.crdClient, volSizeBytes)
		if err != nil {
			log.Errorf("ControllerExpandVolume: nas volume(%s) expand error: %s", req.VolumeId, err.Error())
			return nil, fmt.Errorf("ControllerExpandVolume: nas volume(%s) expand error: %s", req.VolumeId, err.Error())
		}
		log.Infof("ControllerExpandVolume: Successful expand nas quota volume(%s) to size %d", req.VolumeId, volSizeBytes)
	} else if mountType, ok := pvObj.Spec.CSI.VolumeAttributes["mountType"]; ok && mountType == "losetup" {
		log.Infof("ControllerExpandVolume: Successful expand nas losetup volume(%s) to size %d", req.VolumeId, volSizeBytes)
	} else {
		return nil, fmt.Errorf("ControllerExpandVolume: nas volume(%s) not support expand", req.VolumeId)
	}
	return &csi.ControllerExpandVolumeResponse{CapacityBytes: volSizeBytes, NodeExpansionRequired: true}, nil
}
检查Deployment日志,发现扩容逻辑未被触发(找不到任何日志)。

后来在alibaba-cloud-csi-driver\deploy\ack\upgrade\upgrade.md找到以下内容:

插件说明:

CSI-Plugin、CSI-Provisioner两个插件的阿里云发布镜像都是:acs/csi-plugin:{version},部署模板中的其他镜像说明如下:

acs/csi-node-driver-registrar:负责csi-plugin插件注册的sidecar容器;Refer

acs/csi-provisioner:数据卷动态创建的sidecar,负责调用CreateVolume等接口;Refer

acs/csi-attacher:数据卷挂载的sidecar,负责调用ControllerPublishVolume接口;Refer

acs/csi-resizer:数据卷扩容的sidecar,负责调用ControllerExpandVolume接口;Refer

acs/csi-snapshotter:数据卷快照sidecar,负责创建volumeSnapshotContent对象;Refer

acs/snapshot-controller:数据卷快照sidecar,负责调用CreateSnapshot接口;Refer

才发现想要调用ControllerExpandVolume接口是需要额外部署插件的,只是。。。(为何要隐藏的如此之深,一个NAS的扩容放到ACK的目录下),于是按图索骥,找到最新的镜像地址。

snapshot-controller,云开发,阿里云,云计算

 接下来呢,还需要找到部署的yaml,同样藏在ACK下面,alibaba-cloud-csi-driver\deploy\ack\csi-provisioner.yaml中间有一段。

        - name: external-nas-resizer
          image: registry.cn-hangzhou.aliyuncs.com/acs/csi-resizer:v1.1.0-7b30758-aliyun
          args:
            - "--v=5"
            - "--csi-address=\$(ADDRESS)"
            - "--leader-election"
          env:
            - name: ADDRESS
              value: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com/csi.sock
          imagePullPolicy: "Always"
          volumeMounts:
            - name: nas-provisioner-dir
              mountPath: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com

更新了deployment中的yaml后部署会得到三个container,external-nas-provisioner、
external-nas-resizer、csi-provisioner。

至此,差不多是可以实现NAS扩容了,但也不是没有问题了,因为更新PVC后会发现并不是立即就能扩容成功,二是会看到一个message:

waiting for user to (re-)start a pod to finish file system resize of volume on mode

关于这一点,在文档里也能找到踪迹alibaba-cloud-csi-driver\docs\disk-resizer.md

4. Expand FileSystem with restart pod:

// phase2: restart Pod, expand filesystem;
# kubectl delete pod dynamic-create-6d5dc9bb7d-lvhgz
pod "dynamic-create-6d5dc9bb7d-lvhgz" deleted

# kubectl get pvc
NAME           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS           AGE
pvc-disk-new   Bound    pvc-8db30f1a-ad23-11e9-ae51-00163e105050   30Gi       RWO            alicloud-disk-expand   6m13s
# kubectl exec -ti dynamic-create-6d5dc9bb7d-5gzq2 df | grep data
/dev/vdd        30832548    45036  30771128   1% /data

意思是只有这个PVC被挂载到pod,且重启pod才会生效扩容操作。

至此,关于阿里云上部署NAS搞定了。文章来源地址https://www.toymoban.com/news/detail-781958.html

到了这里,关于阿里云NAS存储部署简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 群晖NAS与阿里云盘同步的方法

    同步方法:通过在 docker 中安装 aliyundrive-webdav 实现与阿里云盘同步。 在 docker 的注册表中搜素 aliyun,选择点赞比较多的 messense/aliyundrive-webdav: 下载后安装。建议在配置和启动之前,仔细阅读官网上的说明 (点击界面上 跳转 按钮)。因为近期阿里云盘已经不再支持 Web 端和

    2024年02月06日
    浏览(117)
  • Linux客户端挂载nas存储

    在Linux操作系统中,可以使用NFS(Network File System)协议将NAS设备的共享文件系统挂载到本地计算机上。以下是使用NFS挂载NAS设备的步骤: 确认NAS设备已经正确配置和共享,并且NAS设备和本地计算机在同一局域网内。 在本地计算机上安装NFS客户端软件。例如,在Debian或Ubuntu上

    2024年02月07日
    浏览(42)
  • 企业知识文档管理+群晖nas安全云存储

    企业知识管理系统,利用软件系统或其他工具的企业管理方法,利用软件系统或其他工具,对组织中大量的有价值的方案、策划、成果、经验等知识进行分类存储和管理,积累知识资产避免流失,促进知识的学习、共享、培训、再利用和创新,有效降低组织运营成本,强化其

    2024年02月15日
    浏览(50)
  • 威联通NAS配置阿里云域名和SSL证书

    从阿里云 万网 购买域名; 为威联通 NAS 配置购买的域名,即设置DDNS; 从阿里云购买 SSL 证书; 为通过域名访问威联通配置 SSL 证书。 登录万网,点击 域名注册 ,输入想注册的域名名称后点击 立即查询 ,直到找到尚未注册的域名后 加入清单 ,然后点击 域名清单 ,点击

    2024年02月06日
    浏览(44)
  • [NAS] Synology (群晖) DSM同步数据到阿里云盘

    群晖NAS通过webDAV同步阿里云盘的一些方法会因为某些开源项目的开发者放弃维护而失效,这里介绍一个最新同步到阿里云盘的方法 点击“注册表”,搜索aliyundrive,找到“messense/aliyundrive-webdav”下载安装 选择桥接模式 (默认) 点击“高级设置”,勾选“启用自动重新启动”,

    2024年02月06日
    浏览(119)
  • 威联通QNAP NAS结合cpolar内网穿透实现公网远程访问NAS中存储的文件

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 购入威联通NAS后,很多用户对于如何在外在公网环境下的远程访问威联通NAS不太熟悉,但这又很有必要。所以,本次教程分享如何实现在外远程访问连接家里内网的威

    2024年01月25日
    浏览(50)
  • 存储快速入门——【1】网络存储主要技术(NAS、SAN、SCSI、CIFS、zone)

    在20世纪80年代初,英国纽卡斯尔大学布赖恩.兰德尔教授 ( Brian Randell)和同事通过“纽卡斯尔连接”成功示范和开发了在整套UNIX机器上的远程文件访问。继“纽卡斯尔连接”之后, 1984 年Sun公司发布了NFS协议,允许网络服务器与网络客户分享他们的存储空间。90年代初Auspex工程

    2024年02月09日
    浏览(44)
  • 什么是网络附加存储 (NAS),它是如何工作的

    什么是网络附加存储 (NAS)? 网络附加存储是在网络范围内工作的文件级存储,使异构设备能够访问非结构化数据文件,例如视频、音频、网站、文本文件和 Microsoft Office 文档。NAS 的优势包括低成本实施、易于访问以及支持高容量和 可扩展性。它还提供容错功能和内置的安全

    2024年02月04日
    浏览(35)
  • 阿里云服务器docker配置实现NAS/webdav访问

    最终踩雷是 未设置端口 (第四点),公网IP访问始终没有响应,在此感谢以下四位作者 1、NAS访问阿里云 使用阿里云盘打造免费 WebDAV 服务 nas访问阿里云 plex挂载阿里云访问_NAS存储_什么值得买 2、阿里云本地访问 zotero+阿里云盘+aliyun driver 实现文献管理云存储_北边颇有心气儿

    2024年02月12日
    浏览(41)
  • Unity中的Character Controller 简介

    Slope Limit :坡度限制 Step Offset :每步偏移量 Skin Width :皮肤厚度 Min Move Distance :最小移动距离 Center :中心 Radius :半径 Height :高度 Unity中可以使用character controller实现角色的控制,在unity中先创建一个需要被控制的角色,可以方块体等,为主角加入CharacterController组件 创建C#脚本,写

    2024年02月02日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包