k8s 部署 NFS Provisioner

本文介绍如何解决因镜像源问题导致的NFS存储卷部署失败,并提供通过阿里云构建海外镜像的方法。通过修改Helm Chart中的配置文件,替换为阿里云提供的镜像,实现NFS存储卷的成功部署。

nfs存储卷

按参考文档进行部署,发现镜像是拉不下来的,被墙了,所以需要自己构建一个 用阿里云构建海外镜像

helm 添加仓库

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

helm repo update

拉取 helm 模板

 helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner

解压文件

tar -zxvf nfs-subdir-external-provisioner-4.0.16.tgz

目录结构如下
在这里插入图片描述
修改 values.yaml 文件,更改镜像为阿里云镜像

rep
### 如何在Kubernetes部署和配置NFS #### 准备工作 为了能够在Kubernetes集群上成功部署并配置NFS服务,需先确认已安装好Docker以及Kubernetes环境,并且能够正常使用`kubectl`命令工具来管理集群资源。对于Ubuntu操作系统而言,可以按照官方指南完成上述软件包的设置[^1]。 #### 部署NFS服务器 通过创建一个名为nfs-server.yaml的文件定义NFS Server Pod和服务对象,在此文件内指定镜像版本、挂载路径以及其他必要的参数。下面是一个简单的YAML模板用于启动NFS server实例: ```yaml apiVersion: v1 kind: Service metadata: name: nfs-service spec: ports: - port: 2049 protocol: TCP --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: nfs-server name: nfs-server spec: replicas: 1 selector: matchLabels: app: nfs-server template: metadata: labels: app: nfs-server spec: containers: - image: registry.k8s.io/nfs-provisioner:v4.0.2-gce name: nfs-server securityContext: privileged: true volumeMounts: - mountPath: /exports name: export-volume volumes: - hostPath: path: /srv/nfs/pv type: DirectoryOrCreate name: export-volume ``` 应用该配置文件将会建立一个新的Pod运行NFS服务程序,并开放相应的端口供外部访问。 #### 创建PersistentVolume(PV)与PersistentVolumeClaim(PVC) 为了让其他应用程序能方便地利用这个共享存储空间,还需要进一步声明持久卷(PV)及其对应的请求声明(PVC)。这里给出一段适用于大多数场景下的pv-nfs.yaml样例文档: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: path: / server: nfs-service.default.svc.cluster.local --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi ``` 当提交这段描述之后,任何希望连接到同一命名空间下由NFS提供的磁盘分区的应用都可以引用这个名字为pvc-nfs的对象作为自己的数据源。 #### 测试NFS功能正常与否 最后一步就是验证整个流程是否顺利结束。可以通过编写一个小测试案例的方式来进行检验,比如新建一个pod专门用来写入一些临时文件至刚刚设定好的网络附加存储设备里;随后再起动另一个容器读取这些资料以证明两者之间确实实现了跨节点的数据交换能力。 ```bash $ kubectl run test-writer --image=busybox --command -- sh -c "echo 'hello world' > /mnt/test.txt" $ kubectl exec -it test-reader --image=busybox --mount=true --mount-path=/mnt:/mnt -- sh -c "cat /mnt/test.txt" ``` 以上操作完成后应该可以看到输出结果为“hello world”,这表明基于Kubernetes平台搭建起来的NFS架构已经具备基本可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值