kubernetes-存储抽象pv&pvc
首页->学习资料->微服务治理->k8s 关键词: 发布时间:2023-01-05 23:04:21 浏览次数:430

由于deployment部署生成的pod具有故障转移功能,假如某个pod挂了,重启后可能从A机器部署到B机器了,如果数据存储在A机器上,则B机器上启动的POD就可能没有数据;

为了解决这个问题,需要用的文件存储

【一种是通过文件共享的方式】:

#所有机器安装nfs文件系统

yum install -y nfs-utils


#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


从节点上挂载,如果没有从节点可不执行(ip改为主节点的)

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


------------------原生数据挂载,,发生故障转移时就有问题了--------------------

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

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

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


静态供应(先创建好存储空间),也有动态供应方式(根据pvc中的大小自动生成)


#nfs主节点上创建3个存储目录

mkdir -p /nfs/data/01

mkdir -p /nfs/data/02

mkdir -p /nfs/data/03

#规定每个目录存储的大小,依次为10M,1G,3G


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



PVC创建与绑定

创建PVC(写一个申请,需要200M空间,系统根据静态配置的大小,选择一块合适的存储目录,这里会选择1G的)

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

  name: nginx-pvc

spec:

  accessModes:

    - ReadWriteMany

  resources:

    requests:

      storage: 200Mi

  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




赞:(0)
踩:(0)
相关文章
虚拟机环境搭建及各种坑及前期准备
kubernetes集群环境搭建-公共操作
主节点及node节点配置
名称空间namespace
kubernetes-pod
kubernetes-deployment
kubernetes-service
kubernetes-ingress
kubernetes-ConfigMap
kubernetes-Secret
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:948034
粤ICP备18028092号-1  微信:hurong241