微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

k8s 存储抽象

(相当于之前pod上安装的软件,进行文件外部挂载,但是每个pod都挂载,当pod出现问题,外部挂载文件无法同步,可能就会丢失数据,使用一个外部统一的文件处理系统,使用文件系统的高可用来完善文件的挂载)

环境准备(先安装nfs文件系统)

1、所有节点

#所有机器安装
yum install -y nfs-utils

2、主节点

#nfs主节点
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports (对外暴露目录,使从节点同步该目录)

mkdir -p /nfs/data
systemctl enable rpcbind --Now
systemctl enable nfs-server --Now
#配置生效
exportfs -r

3、从节点

showmount -e 172.31.0.4(检查主节点,那个目录对外暴露

#执行以下命令挂载 nfs 服务器上的共享目录到本机路径 /root/nfsmount
mkdir -p /nfs/data

mount -t nfs 172.31.0.4:/nfs/data /nfs/data(进行挂载)
# 写入一个测试文件
echo "hello nfs server" > /nfs/data/test.txt

4、原生方式数据挂载(dp方式创建,两个副本,对应映射的nfs目录)

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
        name: Nginx
        volumeMounts:
        - name: html
          mountPath: /usr/share/Nginx/html
      volumes:
        - name: html
          nfs:
            server: 172.31.0.4
            path: /nfs/data/Nginx-pv

1、PV&PVC(采用数据池化的方式,提供抽象文件挂载,分为静态和动态挂载,静态挂载提前创建目录大小,申请创建pvc令牌申请资源,动态pv,可以根据pvc申请,动态创建资源)

PV:持久卷(Persistent Volume),将应用需要持久化的数据保存到指定位置

PVC:持久卷申明(Persistent Volume Claim),申明需要使用的持久卷规格

1、创建pv池

静态供应

#nfs主节点
mkdir -p /nfs/data/01
mkdir -p /nfs/data/02
mkdir -p /nfs/data/03

创建PV

apiVersion: v1
kind: PersistentVolume
Metadata:
  name: pv01-10m
spec:
  capacity:
    storage: 10m(文件大小,小写)
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/01
    server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
Metadata:
  name: pv02-1gi
spec:
  capacity:
    storage: 1gi
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/02
    server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
Metadata:
  name: pv03-3gi
spec:
  capacity:
    storage: 3gi
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/03
    server: 172.31.0.4

2、PVC创建与绑定

创建PVC

kind: PersistentVolumeClaim
apiVersion: v1
Metadata:
  name: Nginx-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi(pvc申请大小)
  storageClassName: nfs

创建Pod绑定PVC

apiVersion: apps/v1
kind: Deployment
Metadata:
  labels:
    app: Nginx-deploy-pvc
  name: Nginx-deploy-pvc
spec:
  replicas: 2
  selector:
    matchLabels:
      app: Nginx-deploy-pvc
  template:
    Metadata:
      labels:
        app: Nginx-deploy-pvc
    spec:
      containers:
      - image: Nginx
        name: Nginx
        volumeMounts:
        - name: html
          mountPath: /usr/share/Nginx/html
      volumes:
        - name: html
          persistentVolumeClaim:
            claimName: Nginx-pvc

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐