K8S使用群晖DS218+的NFS

群晖和K8S+

  1. 学习K8S时经常用到网络存储,于是想找个稳定的NFS服务,正好家里的群晖DS218+长期开着,空间又充足,用来提供NFS服务挺合适,本文就是设置和使用的过程备忘;
  2. 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:
    在这里插入图片描述

全文概览

  1. 设置NFS;
  2. NFS客户端安装NFS应用;
  3. K8S上的设置;
  4. 创建存储卷;
  5. 创建Tomcat
  6. 访问Tomcat服务

环境信息

  1. 群晖系统:DSM 6.2.2-24922 Update 4
  2. Kubernetes:1.15
  3. Kubernetes宿主机:CentOS Linux release 7.7.1908
  4. Helm:2.16.1

参考文章

本文重点是K8S实战,因此需要一定K8S基础,请参考:

  1. 《kubespray2.11安装kubernetes1.15》
  2. 《部署和体验Helm(2.16.1版本)》
  3. 《Ubuntu16环境安装和使用NFS》

如果您已经准备好了群晖、K8S、Helm,咱们就来实战吧。

设置NFS

  1. 网页登录群晖,控制面板->共享文件夹
    在这里插入图片描述
  2. 新增共享文件夹:
    在这里插入图片描述
  3. 接下来是加密设置,这里为不设置加密,直接点击下一步
    在这里插入图片描述
  4. 高级设置页面,请按需设置,这里为了简单直接下一步
    在这里插入图片描述
  5. 点击应用即可创建文件夹,然后做NFS设置,如下图:
    在这里插入图片描述
  6. 如下图,记下红框1中的NFS路径/volume1/nfs-tomcat(后面会用到),然后点击红框2:
    在这里插入图片描述
  7. 除了NFS设置,还要给这个文件夹设置权限,否则远程写入的时候会报错,如下图,打开File Station即可看到红框2中的nfs-tomcat,这就是NFS目录对应的本地磁盘目录,在上面点击鼠标右键,选择属性
    在这里插入图片描述
  8. 在弹出的属性页面,增加一个权限配置,请按照您的实际需要设置,这里为了省事儿设为任何人都能操作:
    在这里插入图片描述
    至此,群晖上的NFS设置完毕,接下来在K8S运行一个应用,使用这个NFS存储;

NFS客户端安装

NFS的使用者需要安装客户端,这里是K8S要用NFS,因此要在K8S宿主机上安装客户端应用,对CentOS来说就是执行命令:yum install nfs-utils -y

创建存储卷(PersistentVolume简称PV)

PV是K8S里常用的存储类型,这里创建一个NFS类型的PV:

  1. SSH登录K8S;
  2. 创建namespace:kubectl create namespace tomcat-test
  3. 新建名为tomcat-test-pv.yaml的文件,内容如下,注意nfs.server的值,是群晖的IP地址,nfs.path的值就是前面创建共享文件时记下来的/volume1/nfs-tomcat
apiVersion: v1
kind: PersistentVolume
metadata:
 name: pv-tomcat-test
 namespace: tomcat-test
 labels:
   pv: pv-tomcat-test
spec:
 capacity:
   storage: 10Gi
 accessModes:
   - ReadWriteOnce
 persistentVolumeReclaimPolicy: Recycle
 nfs:
   path: /volume1/nfs-tomcat
   server: 192.168.50.42
  1. 创建PV:kubectl apply -f tomcat-test-pv.yaml
  2. 查看PV,如下图,名为pv-tomcat-test的PV状态为Available,表示空闲状态,可以被K8S使用:
    在这里插入图片描述
  3. 现在PV创建成功,接下来通过Helm创建tomcat,来使用这个PV;

创建Tomcat

  1. 增加helm仓库(带有tomcat的仓库):helm repo add bitnami https://charts.bitnami.com/bitnami
  2. 下载tomcat的chart:helm fetch bitnami/tomcat
  3. chart下载成功后,当前目录出现tomcat配置压缩包tomcat-6.2.4.tgz,解压:tar -zxvf tomcat-6.2.4.tgz
  4. 解压后出现tomcat文件夹,进去后打开文件templates/pvc.yaml,所有内容保持不变,仅在末尾添加下图红框中的内容:
    在这里插入图片描述
  5. 上图红框中的内容很好理解:增加选择器,用上刚才创建的PV
  6. 回到tomcat文件夹下面,执行命令创建tomcat:helm install --name-template tomcat001 -f values.yaml . --namespace tomcat-test
  7. 查看PV状态,可见已经被使用(另一个PV仍旧是空闲状态,说明在pvc.yaml中设置的选择器是有效的):
    在这里插入图片描述
  8. 继续查看pod和service,一切正常,同时发现tomcat的服务端口被映射到宿主机的30512端口:
    在这里插入图片描述
  9. 浏览器访问宿主机IP:30512,可以正常打开tomcat欢迎页面:
    在这里插入图片描述
  10. 回到群晖网页,打开File Station,可见nfs-tomcat目录下已经写入了很多内容,都是tomcat的内部文件:
    在这里插入图片描述
    至此,K8S成功的用上了群晖提供的NFS服务,在今后的K8S学习中,有了稳定的NFS服务,并且得益于群晖文件系统的安全性,数据安全性也有了提升;

欢迎关注我的公众号:程序员欣宸

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供相关的指导。首先,您需要在 Kubernetes 集群中安装 NFS 客户端组件,以便从集群中的 Pod 访问 NFS 存储。 安装 NFS 客户端组件的方法因 Linux 发行版而异。在大多数基于 Debian 的发行版中,您可以使用以下命令安装 NFS 客户端: ``` sudo apt-get update sudo apt-get install -y nfs-common ``` 在基于 Red Hat 的发行版中,您可以使用以下命令安装 NFS 客户端: ``` sudo yum update sudo yum install -y nfs-utils ``` 安装完成后,您需要创建一个持久卷声明(PersistentVolumeClaim)来声明您想要使用 NFS 存储。下面是一个示例 YAML 文件,用于创建一个名为 `nfs-pvc` 的持久卷声明: ``` apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: "" ``` 在这个 YAML 文件中,我们指定了访问模式为 `ReadWriteMany`,这意味着多个 Pod 可以同时读写该卷。我们还指定了存储容量为 10GB。 接下来,您需要创建一个持久卷(PersistentVolume),并将其绑定到您的 NFS 存储。下面是一个示例 YAML 文件,用于创建一个名为 `nfs-pv` 的持久卷: ``` apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: <NFS服务器IP> path: /path/to/nfs ``` 在这个 YAML 文件中,我们指定了访问模式为 `ReadWriteMany`,这与我们在持久卷声明中指定的访问模式相同。我们还指定了存储容量为 10GB,以及 NFS 服务器的 IP 地址和 NFS 存储的路径。 最后,您需要将持久卷声明绑定到您的 Pod。下面是一个示例 YAML 文件,用于创建一个名为 `nfs-pod` 的 Pod,并将其绑定到我们之前创建的 `nfs-pvc` 持久卷声明: ``` apiVersion: v1 kind: Pod metadata: name: nfs-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: nfs-volume mountPath: /mnt/nfs volumes: - name: nfs-volume persistentVolumeClaim: claimName: nfs-pvc ``` 在这个 YAML 文件中,我们指定了一个名为 `nfs-volume` 的卷,并将其绑定到我们之前创建的 `nfs-pvc` 持久卷声明。我们还指定了一个名为 `nginx` 的容器,该容器将挂载 `nfs-volume` 卷到 `/mnt/nfs` 目录中。 希望这些信息能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员欣宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值