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
网络存储。