K8S使用群晖DS218+的NFS
欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
群晖和K8S+
- 学习K8S时经常用到网络存储,于是想找个稳定的NFS服务,正好家里的群晖DS218+长期开着,空间又充足,用来提供NFS服务挺合适,本文就是设置和使用的过程备忘;
- 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:

全文概览
- 设置NFS;
- NFS客户端安装NFS应用;
- K8S上的设置;
- 创建存储卷;
- 创建Tomcat
- 访问Tomcat服务
环境信息
- 群晖系统:DSM 6.2.2-24922 Update 4
- Kubernetes:1.15
- Kubernetes宿主机:CentOS Linux release 7.7.1908
- Helm:2.16.1
参考文章
本文重点是K8S实战,因此需要一定K8S基础,请参考:
如果您已经准备好了群晖、K8S、Helm,咱们就来实战吧。
设置NFS
- 网页登录群晖,控制面板->共享文件夹;

- 新增共享文件夹:

- 接下来是加密设置,这里为不设置加密,直接点击下一步:

- 高级设置页面,请按需设置,这里为了简单直接下一步:

- 点击应用即可创建文件夹,然后做NFS设置,如下图:

- 如下图,记下红框1中的NFS路径/volume1/nfs-tomcat(后面会用到),然后点击红框2:

- 除了NFS设置,还要给这个文件夹设置权限,否则远程写入的时候会报错,如下图,打开File Station即可看到红框2中的nfs-tomcat,这就是NFS目录对应的本地磁盘目录,在上面点击鼠标右键,选择属性:

- 在弹出的属性页面,增加一个权限配置,请按照您的实际需要设置,这里为了省事儿设为任何人都能操作:

至此,群晖上的NFS设置完毕,接下来在K8S运行一个应用,使用这个NFS存储;
NFS客户端安装
NFS的使用者需要安装客户端,这里是K8S要用NFS,因此要在K8S宿主机上安装客户端应用,对CentOS来说就是执行命令:yum install nfs-utils -y
创建存储卷(PersistentVolume简称PV)
PV是K8S里常用的存储类型,这里创建一个NFS类型的PV:
- SSH登录K8S;
- 创建namespace:kubectl create namespace tomcat-test
- 新建名为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
- 创建PV:kubectl apply -f tomcat-test-pv.yaml
- 查看PV,如下图,名为pv-tomcat-test的PV状态为Available,表示空闲状态,可以被K8S使用:

- 现在PV创建成功,接下来通过Helm创建tomcat,来使用这个PV;
创建Tomcat
- 增加helm仓库(带有tomcat的仓库):helm repo add bitnami https://charts.bitnami.com/bitnami
- 下载tomcat的chart:helm fetch bitnami/tomcat
- chart下载成功后,当前目录出现tomcat配置压缩包tomcat-6.2.4.tgz,解压:tar -zxvf tomcat-6.2.4.tgz
- 解压后出现tomcat文件夹,进去后打开文件templates/pvc.yaml,所有内容保持不变,仅在末尾添加下图红框中的内容:

- 上图红框中的内容很好理解:增加选择器,用上刚才创建的PV
- 回到tomcat文件夹下面,执行命令创建tomcat:helm install --name-template tomcat001 -f values.yaml . --namespace tomcat-test
- 查看PV状态,可见已经被使用(另一个PV仍旧是空闲状态,说明在pvc.yaml中设置的选择器是有效的):

- 继续查看pod和service,一切正常,同时发现tomcat的服务端口被映射到宿主机的30512端口:

- 浏览器访问宿主机IP:30512,可以正常打开tomcat欢迎页面:

- 回到群晖网页,打开File Station,可见nfs-tomcat目录下已经写入了很多内容,都是tomcat的内部文件:

至此,K8S成功的用上了群晖提供的NFS服务,在今后的K8S学习中,有了稳定的NFS服务,并且得益于群晖文件系统的安全性,数据安全性也有了提升;
欢迎关注公众号:程序员欣宸
微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos
K8S使用群晖DS218+的NFS的更多相关文章
- 群晖DS218+部署Harbor(1.10.3)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+部署GitLab
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+做maven私服(nexus3)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+部署mysql
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 群晖DS218+部署kafka
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 两台群晖之间传输数据NFS
如何在两台局域网的群晖之间传输数据,可以用NFS的方式来实现.摘抄如下,地址http://www.nasyun.com/thread-64638-1-1.html?reload=true 假设要把群晖 ...
- 群晖 创建nfs 共享文件夹 k8s 使用
1) 打开控制面板 2) 打开共享文件夹 3) 新增共享文件夹 4) 基本信息配置 2) 3) 4) 5) 点完确定,应该会退出,继续选中刚才创建的,点编辑 2) 3) 5)返回主页面,点击file ...
- 什么是NAS.什么是黑白群晖?(转)
前言 为了让更多的新人可以简单了解什么是nas,什么是黑群晖.什么是白群晖!有什么作用?特此制作以下教学!(原文为MOMO所写).图片也大体从互联网上下载.有对原作者不便之 ...
- [k8s]jenkins配合kubernetes插件实现k8s集群构建的持续集成
另一个结合harbor自动构建镜像的思路: 即code+baseimage一体的方案 - 程序员将代码提交到代码仓库gitlab - 钩子触发jenkins master启动一次构建 - jenkin ...
随机推荐
- Cookies题解
来源:<算法竞赛进阶指南> Describe: 有M块饼干要分给N个孩子.当有k个孩子分到的饼干数比第i个孩子分到的多时,会产生g[i]*k的贡献.求最小的贡献及任意一种方案. Solut ...
- js计算两个时间相差
.filter('useTime', function() { return function(val) { // if (/.(.mp4)$/gi.test(url)) { // return JS ...
- linux系统修改不成功/无法修改密码
1.问题描述 新上架的60台浪潮服务器使用某带外装机平台进行统一安装,安装完成后修改用户密码时统一无法修改,使用root账户无法修改其他用户密码,自身根密码也无法修改成功 2.排查问题 因带外装机平台 ...
- makefile的隐式规则
target := exe source_code = hello.c OBJS = $(source_code:.c=.o) $(target):$(OBJS) gcc $^ -o $@ clean ...
- 032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例--闰年问题 本文知识点:运算符和if-else条件语句的综合案例 ...
- c++中CString:: Find , ReverseFind, Left, Right
CString 是在MFC中的头文件 非MFC加上afx.h头文件 直接上代码: // ConsoleApplication1.cpp : Defines the entry point for th ...
- 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost.. ...
- 轻松理解JVM的分代模型
前言 上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习. 本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解j ...
- 轻轻松松学CSS:Flex布局
Flex布局就是"弹性布局",它可以简便.完整.响应式地实现各种页面布局.引入弹性布局的目的,当页面需要适应不同的屏幕大小确保元素拥有恰当的布局方式,对一个容器中的子元素进行排列 ...
- linux查看进程内存使用情况,以及将线程情况输出文件
用jmap把进程内存使用情况dump到文件中,再用jhat分析查看.jmap进行dump命令格式如下: jmap -dump:format=b,file=/tmp/dump.dat 21711 -- ...