K8S集群中部署NFS之一:配置NFS服务

在K8S中对于无状态的应用我们可以比较容易的扩展应用程序、滚动升级和重新启动崩溃的应用程序,但是对于一些无状态的应用,分为需要维护服务的拓扑结构和需要持久化数据两种情况,对于前者,我们可以使用headless service来实现,对于后者我们需要在集群中使用持久存储来持久化数据。而持久化存储,NFS(Network File System)是一个使用比较常用的分布式存储技术,在本系列中,我将详细演进如何在K8S集群中部署NFS。为了使得大家比较容易理解,将文章分成4个部分。
第一部分:配置 NFS 服务器
第二部分:将 NFS 服务器文件夹挂载到每个节点的本地文件夹
第三部分:将Persistent Volume配置直接连接到 NFS 服务器
第四部分:创建Storage Class声明来自动创建Persistent Volume

写在前面

这一系列文章主要译自下面的文章,但由于k8s版本的原因导致一些功能不正常,我在部署过程中也遇到了一些问题,并得以解决。此外作者主要是在树莓派上完成部署,是ARM架构,因此一些脚本不能在在PC上正常工作,我也在文中加以修改,并给出了详细的解决办法。

https://levelup.gitconnected.com/how-to-use-nfs-in-kubernetes-cluster-configuring-the-nfs-server-1bf4116641d4 

本文的源代码都是来自作者的github主页

https://github.com/fabiofernandesx/k8s-volumes

NFS Server配置

首先要做的是配置NFS服务器。由于我没有使用树莓派来测试外挂存储,因此我就只外挂了三个目录,如果需要外挂存储,可以参考原文。分别如下:

  • /ssd/host-mapped — 它将是本地磁盘中的一个文件夹,并在集群中使用,以演示如何使用每个节点上的“映射”文件夹创建Persistent Volume。
  • /ssd/direct — 它也将是一个文件夹,用于演示如何创建直接访问 NFS 服务器的 PV,而无需先将文件夹映射到节点。
  • /ssd/dynamic — NFS 服务器本地磁盘中的另一个文件夹。它将通过集群内的Storage Class使用动态 PV 创建。

安装NFS Server

使用以下命令安装NFS Server

sudo apt-get install nfs-kernel-server -y

导出endpoints

编辑/etc/exports 文件导出我们需要共享的endpoints,然后刷新内存

/ssd/host-mapped *(rw,no_root_squash,insecure,async,no_subtree_check,anonuid=1001,anongid=1001)
/ssd/direct *(rw,no_root_squash,insecure,async,no_subtree_check,anonuid=1002,anongid=1002)
/ssd/dynamic *(rw,no_root_squash,insecure,async,no_subtree_check,anonuid=1003,anongid=1003)

重启NFS Server

$ sudo exportfs -ra

现在我们在集群节点上可以安装NFS并且在每个工作节点上挂载文件夹。

安装NFS common

在每个节点上安装nfs common

$ sudo apt-get install nfs-common -y

在节点上创建文件夹

sudo mkdir -p /ssd/host-mapped

编辑导出文件来自动挂载

sudo nano /etc/exports
192.168.2.30:/ssd/host-mapped  /ssd/host-mapped nfs rw 0 0

重启工作节点服务器,并检测挂载是否成功

$ df -h /ssd/host-mapped

image

在每个节点上重复上述步骤,实现每个工作节点挂载NFS服务器的文件夹。

你可能感兴趣的:(K8S集群中部署NFS之一:配置NFS服务)