🐷 安装nfs

# kubernetes上安装nfs ## 配置nfs nfs就是Linux版本的共享文件夹,非常好用啊,nfs分为服务端和客户端。 nfs服务端安装方法,Ubuntu和CentOS不一样。 Ubuntu只要安装nfs-kernel-server,CentOS叫做nfs-utils,还要安装rpcbind ### 主节点上 ``` # 创建共享目录 mkdir -p /data/nfsdata # 授权共享目录 chmod -R 777 /data/nfsdata # 修改esports文件 向 /etc/exports 文件中添加,* 表示不限用户,后面一串表示权限 /data/nfsdata *(rw,no_root_squash,no_all_squash,sync) # 启动服务 /etc/init.d/nfs-kernel-server start 或者是 systemctl start nfs-kernel-server CentOS上好像就叫nfs # 配置开机自启 systemctl enable nfs-kernel-server ``` ### 从节点上 ``` # 安装客户端 Ubuntu上:nfs-common; CentOS上:nfs-utils # 挂载目录 mount -t nfs 10.215.49.91:/nfs /mnt ``` 然后,就可以在从节点上访问/mnt目录即可看到宿主机/nfs目录的内容了 ## 安装nfs插件 上面步骤安装好nfs之后就可以独立使用了,但是想要让kubernetes也使用的话需要安装插件。 插件的名称是`nfs-subdir-external-provisioner`,是`nfs-provisioner`的进化版,`nfs-provisioner`已弃用,[官方地址](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner)。 官方提供了在线安装的方法: ```shell helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ helm install my-release nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \ --set nfs.server=x.x.x.x \ --set nfs.path=/exported/path(共享目录地址) ``` 但是网络不一定都是良好的。 我在操作过程中一直连接不上仓库,就只能使用手动安装的方法 - 使用`helm fetch nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --untar`下载离线包,大概率这个命令也是失败的,但是会跳出一个下载链接,可以使用其他设备下载好这个文件。(~~非常小的文件,5kb左右,不知道咋地这都下载不了~~) - 下载完毕之后上传到服务器解压,使用`tar -xzvf nfs-subdir-external-provisioner.tgz`进行解压 - 解压之后进入文件修改value.yaml文件,找到nfs词条下的server和path,填写上自己配置的信息。运行`helm --kubeconfig kube_config_rancher-cluster.yml install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/` >i 注意解压命令有一个z,这是因为使用 gzip 压缩算法解压缩文件。还有要注意z的位置不能在f后面。 >i 注意helm安装的时候,`nfs-subdir-external-provisioner`是要安装的软件名称,`nfs-subdir-external-provisioner/`是解压缩之后的文件夹名称。 >i 想要安装其他版本,[发行版地址](https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/releases?page=2)。 安装完成之后使用`kubectl get sc`测试一下。 得到结果如下: ``` [root@master jupyterhub]# kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE nfs-client cluster.local/nfs-subdir-external-provisioner Delete Immediate true 34m ``` `nfs-client`这个名字在安装`jupyterhub`的时候有用,这个名字可以在`value.yaml`文件中定制,不修改的话,默认是这个。