🐷 安装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`文件中定制,不修改的话,默认是这个。