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

K8S如何挂载NFS

云原生之kubernetes实战在k8s集群下搭建gitlab

[k8s]使用nfs挂载pod的应用日志文件

microk8s上给Pod挂载NFS

k8s nfs挂载设置