Kubernetes 之搭建NFS服务器
2020-03-22 by dongnan
开始之前
在前面的三篇文章中,至此我们已经准备好了K8S集群环境。
接下来我们将以在K8S集群运行一个真实的项目为目标,依次介绍项目所使用的K8S资源对象。
这个项目是一个典型的Web系统,使用 Java Spring Boot框架开发,需要使用 MySql、Redis数据库、NFS共享存储(多个Pod容器间共享文件)。
由于K8S环境部署在阿里云上,所以这里使用了阿里云提供的 RDS-Mysql 、RDS-Redis 数据库服务、NAS(NFS)
网络附加存储等中间件产品,对于K8S集群来说,我们需要将这些服务映射为K8S的资源对象。
项目使用的K8S的资源对象包括:
- PV&PVC,用于Pod数据卷(NFS)。
- Pod (volumeMounts、readinessProbe),挂载数据卷、健康检查。
- Secret,存储机密数据。
- Service,服务-外部域名(ExternalName)。
- NetworkPolicy,网络策略。
- LimitRange,资源限制范围。
- Ingress
环境
操作系统: Ubuntu Server 20.04
测试的k8s集群由一个Master管理节点、两个Worker计算节点组成,详细请参考这里。
目标
本文介绍如何使用 Ubuntu 系统搭建 NFS服务器过程。
注意,此文章仅用于测试目的,生产环境是阿里云提供的NAS(NFS)服务,服务的HA由阿里云负责。
部署NFS
服务端
安装软件
apt-get install nfs-kernel-server
创建存储目录
mkdir /data
编辑配置文件
vim /etc/exports 
/data 10.0.20.0/24(rw,sync,no_root_squash,no_subtree_check)
启动服务
/etc/init.d/nfs-kernel-server start
可选命令
# 服务状态
/etc/init.d/nfs-kernel-server status
# 关闭服务
/etc/init.d/nfs-kernel-server stop
# 重新加载配置文件
exportfs -arv
客户端
这里NFS客户端是指,k8s集群的Worker节点。
安装软件
apt-get install nfs-common
NFS服务端信息
showmount -e 10.0.20.239
Export list for 10.0.20.239:
/data 10.0.20.0/24
挂载测试
mount -t nfs 10.0.20.239:/data /mnt/
写入测试
hostnamectl > /mnt/host.txt
rpc状态
nfsstat -rc
Client rpc stats:
calls      retrans    authrefrsh
100        0          100
小结
至此 NFS服务器准备完毕,接下来介绍如何使用 PV&PVC 挂载 NFS网络存储。