k8s-存储pv和pvc-7

举报
brucexiaogui 发表于 2021/11/25 23:53:49 2021/11/25
【摘要】 k8s-存储pv和pvc-7 1.概述 PersistentVolume(一些简称PV):由管理员添加的的一个存储的描述,是一个全局资源,包含存储的类型,存储的大小和访问模式等。它的生命周期独立...

k8s-存储pv和pvc-7

1.概述

PersistentVolume(一些简称PV):由管理员添加的的一个存储的描述,是一个全局资源,包含存储的类型,存储的大小和访问模式等。它的生命周期独立于Pod,例如当使用它的Pod销毁时对PV没有影响。

PersistentVolumeClaim(一些简称PVC):是Namespace里的资源,描述对PV的一个请求。请求信息包含存储大小,访问模式等。

2.创建nfs存储

pv存储数据类型有很多种,这类选择了nfs存储。所以我们先安装nfs服务。
NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils,客户端只需要安装 nfs-utils

2.1.安装nfs存储

# 服务端安装,提供nfs存储的节点为服务端,例如master节点
yum install -y nfs-utils rpcbind
#客户端安装,访问nfs服务存储节点为客户端,例如node节点
yum install -y nfs-utils

  
 
  • 1
  • 2
  • 3
  • 4

2.2.配置nfs

  • 我们在服务端创建一个共享目录 /data/share ,作为客户端挂载的远端入口,然后设置权限。
mkdir -p /data/share
chmod 777 /data/share

  
 
  • 1
  • 2
  • 然后,修改 NFS 配置文件 /etc/exports
vim /etc/exports
# 配置内容
/data/share 172.16.8.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

  
 
  • 1
  • 2
  • 3
  • 配置文件内容说明

此处,我配置了将 /data/share 文件目录设置为允许 IP 为该 172.16.8.0/24 区间的客户端挂载,(注意这个IP地址范围要改成你当前nfs服务所在主机的ip地址)当然,如果客户端 IP 不在该区间也想要挂载的话,可以设置 IP 区间更大或者设置为 * 即允许所有客户端挂载,例如:/home *(ro,sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。
在这里插入图片描述

  • 重启nfs服务
systemctl restart rpcbind
systemctl restart nfs

  
 
  • 1
  • 2
  • 测试nfs
    在另一个node节点测试是否可以正常挂在nfs服务
#注意这个IP地址不是随便写的,他是上面部署nfs服务节点的IP地址
showmount -e 172.16.8.111

  
 
  • 1
  • 2

在这里插入图片描述

3.创建pv

3.1.创建pv文件

#在nfs共享目录下创建一个目录存放pv配置
cd /data/share/
mkdir volume
# 创建pv配置文件
vim t1_pv.yaml

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • pv配置文件说明
apiVersion: v1  #资源版本
kind: PersistentVolume  #资源类型是pv
metadata:
  name: test #pv资源名称
  labels:
    type: test  #资源标签
spec:
  capacity:
    storage: 10Gi # pv 提供最大的存储
  accessModes:
    - ReadWriteMany # pv访问模式,允许多人同时读写
  persistentVolumeReclaimPolicy: Recycle #pvc回收策略,允许回收
  nfs: #pv 存储类型是nfs
    path:  "/data/share"  # nfs数据存储路径
    server: 10.0.0.11 #nfs服务地址
    readOnly: false # nfs 挂在是否只读,否

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.2.启动pv

kubectl create -f t1_pv.yaml

  
 
  • 1
  • 查看pv状态
kubectl get pv

  
 
  • 1

在这里插入图片描述

4.创建pvc

4.1.创建pvc文件

vim t1_pvc.yaml

  
 
  • 1
apiVersion: v1
kind: PersistentVolumeClaim #资源类型是pvc
metadata:
  name: nfs  #pvc名称
spec:
  accessModes:
    - ReadWriteMany  #pvc访问模式:多人同时访问
  resources:
    requests:  #pvc需求资源
      storage: 1Gi  # pvc需要1G存储空间

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.2.启动pvc

# 启动pvc
kubectl create -f t1_pvc.yaml

  
 
  • 1
  • 2
  • 查看pvc状态
kubectl get pvc

  
 
  • 1

pvc绑定到名称test的pv上
在这里插入图片描述

5.持久化存储应用到项目

5.1.持久化存储概述

前面我们创建了pv和pvc,他们的作用就是用来做持久化存储。例如一个部署到k8s的项目,分别有一个tomcat业务pod和mysql数据库pod,当mysql的pod重启后,存储在mysql中的数据也随着pod的销毁而消失,这个时候我们需要将mysql中的数据持久化存储,不受pod创建和销毁影响。

5.2.mysql持久化存储配置

# 编辑mysql rc文件,添加pvc
vim    mysql-rc-pvc.yml 

  
 
  • 1
  • 2
  • 文件配置说明
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: 10.0.0.11:5000/mysql:5.7
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: '123456'
          volumeMounts:  #挂载一个目录
          - name: data  # 定义目录的名称
            mountPath: /var/lib/mysql  #目录的路径
      volumes:  #使用挂载的目录
      - name: data  #这个名称必须和上面volumeMounts名称一致
        persistentVolumeClaim: #pvc配置
          claimName: nfs  # pvc的名称是我们创建好的pvc名称

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

5.3.启动mysql-rc-pvc

kubectl create -f mysql-rc-pvc.yaml

  
 
  • 1

启动pod后,查看nfs的共享目录下已经有mysql的数据。

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/109509214

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。