k8s环境安装nfs服务器

ubuntu中安装nfs服务器

搭建nfs服务器是很简单的,通过几行命令就可以安装好。

sudo apt install nfs-kernel-server
mkdir -p /mnt/disk
chown nobody:nogroup /mnt/disk
chmod 777 /mnt/disk
vim  /etc/exports
/mnt/disk 10.0.0.0/8(rw,sync,no_subtree_check)

注意:其中的10.0.0.0/8是表示内网可访问的网段

使配置生效
$ exportfs -r

服务端查看下是否生效
$ showmount -e localhost

将nfs服务加入到k8s中去

首先,在某个能执行k8s命令的节点之上,安装nfs-client-provisioner应用。

添加仓库防止默认仓库:
$ helm repo add azure http://mirror.azure.cn/kubernetes/charts/

执行安装:
$ helm install azure/nfs-client-provisioner --set nfs.server=10.0.0.188 --set nfs.path=/mnt/disk --generate-name

其中 10.0.0.188 是这台nfs服务器的内网IP;另外k8s执行命令的节点之中需要安装helm。

出现持久券“等待中”问题:

查看名称(如:minio)
kubectl get pvc -n kubesphere-system
kubectl describe pvc minio -n kubesphere-system 来查看更多错误信息

waiting for a volume to be created, either by external provisioner “cluster.local/nfs-client-provisioner-1667538143” or manually created by system administrator

因为:
Kubernetes v1.20 (opens new window) 开始,默认删除了 metadata.selfLink 字段,然而,部分应用仍然依赖于这个字段,例如 nfs-client-provisioner。如果仍然要继续使用这些应用,您将需要重新启用该字段。
可以更改:
/etc/kubernetes/manifests/kube-apiserver.yaml

增加一行:

  • –feature-gates=RemoveSelfLink=false
    来解决,也可以直接使用新版本的nfs-client-provisioner
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=192.168.56.188 \
    --set nfs.path=/data/disk

再设置成默认存储卷,这样就好了;

查看存储类:
kubectl get storageclass

将nfs设置为默认存储类(名字后面带default才是默认)
kubectl patch storageclass nfs-client -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:“true”}}}’

编辑对应的storageclass改为默认,支持默认不声明场景下动态使用存储空间:
annotations:
storageclass.kubernetes.io/is-default-class: ‘true’

查看安装情况: kubectl get sc

若挂载报错:
wrong fs type, bad option, bad superblock

没个node上面安装:
apt-get install nfs-common

ref:
[1]: https://kubesphere.io/zh/docs/reference/storage-system-installation/nfs-server/
[2]: https://cloud.tencent.com/developer/article/1433258

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供相关的指导。首先,您需要在 Kubernetes 集群中安装 NFS 客户端组件,以便从集群中的 Pod 访问 NFS 存储。 安装 NFS 客户端组件的方法因 Linux 发行版而异。在大多数基于 Debian 的发行版中,您可以使用以下命令安装 NFS 客户端: ``` sudo apt-get update sudo apt-get install -y nfs-common ``` 在基于 Red Hat 的发行版中,您可以使用以下命令安装 NFS 客户端: ``` sudo yum update sudo yum install -y nfs-utils ``` 安装完成后,您需要创建一个持久卷声明(PersistentVolumeClaim)来声明您想要使用 NFS 存储。下面是一个示例 YAML 文件,用于创建一个名为 `nfs-pvc` 的持久卷声明: ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: "" ``` 在这个 YAML 文件中,我们指定了访问模式为 `ReadWriteMany`,这意味着多个 Pod 可以同时读写该卷。我们还指定了存储容量为 10GB。 接下来,您需要创建一个持久卷(PersistentVolume),并将其绑定到您的 NFS 存储。下面是一个示例 YAML 文件,用于创建一个名为 `nfs-pv` 的持久卷: ``` apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: <NFS服务器IP> path: /path/to/nfs ``` 在这个 YAML 文件中,我们指定了访问模式为 `ReadWriteMany`,这与我们在持久卷声明中指定的访问模式相同。我们还指定了存储容量为 10GB,以及 NFS 服务器的 IP 地址和 NFS 存储的路径。 最后,您需要将持久卷声明绑定到您的 Pod。下面是一个示例 YAML 文件,用于创建一个名为 `nfs-pod` 的 Pod,并将其绑定到我们之前创建的 `nfs-pvc` 持久卷声明: ``` apiVersion: v1 kind: Pod metadata: name: nfs-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: nfs-volume mountPath: /mnt/nfs volumes: - name: nfs-volume persistentVolumeClaim: claimName: nfs-pvc ``` 在这个 YAML 文件中,我们指定了一个名为 `nfs-volume` 的卷,并将其绑定到我们之前创建的 `nfs-pvc` 持久卷声明。我们还指定了一个名为 `nginx` 的容器,该容器将挂载 `nfs-volume` 卷到 `/mnt/nfs` 目录中。 希望这些信息能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值