K8S 下配置 Default StorageClass (NFS)

发布时间 2023-10-31 23:18:25作者: 呼长喜

创建NFS共享服务(Ubuntu)

apt-get install -y nfs-kernel-server # 安装nfs服务器

apt-get install -y nfs-common #安装nfs客户端
手动编辑/etc/exports配置文件


root@master:~/app/k8s# vim /etc/exports

root@master:~/app/k8s# cat /etc/exports

# /etc/exports: the access control list for filesystems which may be exported

# to NFS clients. See exports(5).

#

# Example for NFSv2 and NFSv3:

# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_sub tree_check)

#

# Example for NFSv4:

# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)

# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)

#

/data/volumes *(rw,sync,no_root_squash,insecure)

root@master:~/app/k8s#
/data/volumes 代表的是共享的目录
* 代表是允许所有的网络访问
ro 该主机对该共享目录有只读权限
rw 该主机对该共享目录有读写权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户机用root访问该共享文件夹时,不映射root用户
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
sync 资料同步写入到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘insecure 允许从这台机器过来的非授权访问
允许客户端从大于1024的tcp/ip端口连接服务器


mkdir -p /data/volumes #创建目录

chmod -R 777 /data/volumes

systemctl daemon-reload

/etc/init.d/nfs-kernel-server restart # 重启nfs服务

/etc/init.d/rpcbind restart
测试nfs服务器


showmount -e ${nfs_server_name}



mount -t nfs ${nfs_server_name}:/nfsroot /mnt -o nolock #挂载测试



umount /mnt #卸载
安装Helm
Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式, 所以这里先安装 Helm,参见Helm | 安装Helm,这里不再复制了。

部署nfs-subdir-external-provisioner到kubernetes集群

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/



helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \

--set nfs.server=master.vfox.top \

--set nfs.path=/data/volumes \

--set image.tag=v4.0.2 \

--set storageClass.defaultClass=true \

--set image.repository=registry.cn-beijing.aliyuncs.com/docker-vfox/nfs-subdir-external-provisioner



# 部署完成显示

NAME: nfs-subdir-external-provisioner

LAST DEPLOYED: Sat Jan 15 16:39:35 2022

NAMESPACE: default

STATUS: deployed

REVISION: 1

TEST SUITE: None

root@master:~/app/helm# cd /data/volumes/
国内不能拉取 k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 , 解决方法参考

(15条消息) 使用阿里云容器镜像的 github关联仓库,海外机器构建 Docker 镜像_哈哈虎的博客-CSDN博客

查看已经创建的StorageClass


root@master:/# kubectl get StorageClass

NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE

nfs-client (default) cluster.local/nfs-subdir-external-provisioner Delete Immediate true 4m11s