跳转至

Kubernetes 之搭建NFS服务器


2020-03-22 by dongnan

开始之前

在前面的三篇文章中,至此我们已经准备好了K8S集群环境。

接下来我们将以在K8S集群运行一个真实的项目为目标,依次介绍项目所使用的K8S资源对象。

这个项目是一个典型的Web系统,使用 Java Spring Boot框架开发,需要使用 MySqlRedis数据库、NFS共享存储(多个Pod容器间共享文件)。

由于K8S环境部署在阿里云上,所以这里使用了阿里云提供的 RDS-MysqlRDS-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网络存储。

参考

回到页面顶部