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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐