k8s 安装nfs_Kubernetes集群下部署NFS持久存储

本文详细介绍了如何在Kubernetes(k8s)集群中部署NFS持久存储,包括静态和动态申请PV卷的方法。首先,搭建了NFS服务器,然后通过创建PV、PVC和测试POD来验证静态申请PV卷的过程。接着,通过部署nfs-client-provisioner实现了动态申请PV卷,创建StorageClass和测试PVC,确保NFS服务器与Kubernetes集群间通信正常。最后,文章展示了测试环境的清理步骤。
摘要由CSDN通过智能技术生成

NFS是网络文件系统Network File System的缩写,NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中,而在本地的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样。

kubernetes使用NFS共享存储有两种方式:

1.手动方式静态创建所需要的PV和PVC。

2.通过创建PVC动态地创建对应PV,无需手动创建PV。

下面对这两种方式进行配置并进行演示。

一、搭建NFS服务器

k8s集群准备,以这篇文章为例:https://www.toutiao.com/i6768745162030973447/?group_id=6768745162030973447

这里演示在master节点上部署NFS服务器。服务器操作系统:Centos7.5.

#master节点安装nfsyum -y install nfs-utils#创建nfs目录mkdir /data#修改权限chmod  -R 777 /data#编辑export文件vim /etc/exports/data *(rw,no_root_squash,sync)#配置生效exportfs -r#查看生效exportfs#启动rpcbind、nfs服务systemctl restart rpcbind && systemctl enable rpcbindsystemctl restart nfs && systemctl enable nfs#所有node节点安装客户端 (很重要)yum -y install nfs-utils systemctl start nfs && systemctl enable nfs #查看 RPC 服务的注册状况rpcinfo -p localhost#showmount测试showmount -e 10.211.55.4
4b3a4c4e2e08ae1ab44681b7f7b169b7.png
fb3112c3f8ac5c6ae0c9f4aef9f255d9.png

二、静态申请PV卷

添加pv卷对应目录,这里创建1个pv卷,则添加1个pv卷的目录作为挂载点。

#创建pv卷对应的目录mkdir -p /data/pv01#配置exportrsvim /etc/exports/data *(rw,no_root_squash,sync)/data/pv01 *(rw,no_root_squash,sync)#配置生效exportfs -r#重启rpcbind、nfs服务systemctl restart rpcbind && systemctl restart nfs

创建PV

下面创建1个名为pv01的PV卷,配置文件 nfspv01.yaml 如下:

apiVersion: v1kind: PersistentVolumemetadata:  name: nfspv01  labels:    pv: nfspv01spec:  capacity:    storage: 1Gi  accessModes:    - ReadWriteOnce  persistentVolumeReclaimPolicy: Recycle  storageClassName: nfs  nfs:    path: /data/pv01    server: 10.211.55.4 

配置说明:

① capacity 指定 PV 的容量为 1G。

② accessModes 指定访问模式为 ReadWriteOnce,支持的访问模式有:

ReadWriteOnce – PV 能以 read-write 模式 mount 到单个节点。

ReadOnlyMany – PV 能以 read-only 模式 mount 到多个节点。

ReadWriteMany – PV 能以 read-write 模式 mount 到多个节点。

③ persistentVolumeReclaimPolicy 指定当 PV 的回收策略为 Recycle,支持的策略有:

Retain – 需要管理员手工回收。

Recycle – 清除 PV 中的数据,效果相当于执行 rm -rf /thevolume/*。

Delete – 删除 Storage Provider 上的对应存储资源,例如 AWS EBS、GCE PD、Azure

Dis

Kubernetes 中,可以使用 NFS volume 来将 NFS 服务器上的目录挂载到 Pod 中。下面是一些指导步骤: 1. 在 NFS 服务器上创建共享目录,确保其在网络中可见。 2. 在 Kubernetes 集群安装 NFS 客户端。 3. 创建一个包含 NFS 挂载信息的 Kubernetes Secret 对象,用于在 Pod 中访问 NFS 服务器。 4. 创建一个 PersistentVolume 对象,它定义了如何访问 NFS 服务器上的共享目录。 5. 创建一个 PersistentVolumeClaim 对象,它请求一个 PersistentVolume。 6. 在 Pod 中使用这个 PersistentVolumeClaim 对象作为 volume。 下面是一个示例 YAML 文件,它演示了如何将 NFS 服务器上的目录挂载到 Pod 中: ```yaml apiVersion: v1 kind: Secret metadata: name: nfs-creds type: Opaque data: username: <base64-encoded-username> password: <base64-encoded-password> --- apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 1Gi accessModes: - ReadWriteMany nfs: server: <nfs-server> path: /path/to/nfs/share readOnly: false mountOptions: - hard - nfsvers=4.1 - timeo=600 - retrans=2 - noresvport persistentVolumeReclaimPolicy: Retain storageClassName: nfs volumeMode: Filesystem secretRef: name: nfs-creds --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs volumeMode: Filesystem --- apiVersion: v1 kind: Pod metadata: name: nfs-pod spec: containers: - name: nfs-container image: nginx volumeMounts: - name: nfs-volume mountPath: /usr/share/nginx/html volumes: - name: nfs-volume persistentVolumeClaim: claimName: nfs-pvc ``` 在上面的 YAML 文件中,我们首先创建了一个 Secret 对象,它包含了 NFS 服务器的用户名和密码。接下来,我们创建了一个 PersistentVolume 对象,它定义了如何访问 NFS 服务器上的共享目录。注意,我们使用了我们之前创建的 Secret 对象来访问 NFS 服务器。然后,我们创建了一个 PersistentVolumeClaim 对象,它请求一个 PersistentVolume。最后,我们创建了一个 Pod 对象,它使用这个 PersistentVolumeClaim 对象作为 volume。 希望这些信息能够帮助你安装并配置 NFSKubernetes 上的挂载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值