k8s之存储抽象nfs挂载
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s之存储抽象nfs挂载相关的知识,希望对你有一定的参考价值。
1、简介
存储抽象,即将存储单独用一个服务去联系起来。以前我们习惯把各个pod的卷挂载到其主机上的某个位置,但k8s的集群特点之一是master节点的随机分配,若有一个pod宕机,k8s会自动创建一个新的pod,当此时若新的pod没有分配到原先的节点上,则原理与本机挂载的文件将作废,导致数据丢失。为了解决这个问题,我们需要有一个统一的存储服务,来管理整个集群常见的存储框架有Glusterfs、NFS、CephFS等
2、环境准备
2.1、首先我们在k8s的3台服务器上都安装nfs服务,执行命令如下:
#所有机器安装 yum install -y nfs-utils
2.2、在主节点进行如下的操作:
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports
上面的命令表示我们准备在master节点暴露/nfs/data这个目录,而且是以非安全的方式,读写的权限暴露出去
在master节点创建要暴露的文件夹:
mkdir -p /nfs/data
启动rpc远程绑定同步目录服务,并且是开机自启:
systemctl enable rpcbind --now
下面启动nfs服务器并且使配置生效:
systemctl enable nfs-server --now #配置生效 exportfs -r
使用nfs命令检查暴露的目录:
2.3、 在从节点进行如下的操作,让从节点同步主节点的目录:
在两个从节点使用如下命令进行检查主节点提供了哪些目录可以同步的,是一个检查命令
# 下面的192.168.0.164是主节点的私有ip地址 showmount -e 192.168.0.164
下面在两个从节点创建挂载目录:
#执行以下命令挂载 nfs 服务器上的共享目录到本机路径 /nfs/data mkdir -p /nfs/data
注意:上面的/nfs/data目录不一定也要和主节点一样,可以是/nfs/test都行
下面使用挂载命令,同步主节点的目录:
mount -t nfs 192.168.0.164:/nfs/data /nfs/data
上面的192.168.0.164是主节点的私有ip地址
2.3、下面进行测试
首先我们在master节点的/nfs/data/目录下创建文件
上面可以发现主节点我们创建了test111文件,下面我们到从节点查看:
发现都是有的,同理我们在从节点,创建文件,也会同步到主节点中,这里就不测试了
3、下面使用创建一个Deployment来测试挂载nginx
3.1、Deployment的文件内容如下,文件名deploty-nginx.yaml
apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx-pv-demo name: nginx-pv-demo spec: replicas: 2 # 副本数有两个 selector: matchLabels: app: nginx-pv-demo template: metadata: labels: app: nginx-pv-demo spec: containers: - image: nginx # 拉取一个nginx镜像 name: nginx volumeMounts: # 定义要挂载的目录 - name: html mountPath: /usr/share/nginx/html volumes: - name: html #这个对应上面要挂载的目录的名称 nfs: #使用nfs方式 server: 192.168.0.164 #nfs主节点的ip地址 path: /nfs/data/nginx-pv #挂载到主机的这个目录下
注意:我们需要在/nfs/data目录下提前将nginx-pv目录建好
执行文件:
kubectl apply -f deploty-nginx.yaml
下面我们首先在/nfs/data/nginx-pv目录下创建一个index.html
下面我们进入容器内查看:
可以发现已经同步进去了
以上是关于k8s之存储抽象nfs挂载的主要内容,如果未能解决你的问题,请参考以下文章
[云原生专题-38]:K8S - 核心概念 - 存储抽象- 空间大小可配置的目录挂载PV+PVC