一、简介

  • local能够作为PV使用的本地存储卷。
  • local卷插件用于将本地存储设备(如磁盘、分区或目录) 配置为卷。
  • hostPath卷在Pod被重建后可能被调试至其它节点而无法再次使用此前的数据,而基于local卷,调度器能自行完成调度绑定。
  • 基于local的PV,需要管理员通过nodeAffinit声明其定义在的节点。
  • local 卷只能用作静态创建的持久卷。不支持动态配置。

二、创建local PV

1、创建存储类

  • 配置PVC绑定local PV时,通常要创建个StorageClass。
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat storageclass-local.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f storageclass-local.yaml
storageclass.storage.k8s.io/local created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 4s

2、创建率属于存储类的PV

  • 进入节点1准备本地磁盘目录,作为local pv的存储卷
root@k8s-node01:~# mkdir /disks/vol1 -pv
mkdir: created directory '/disks'
mkdir: created directory '/disks/vol1'
root@k8s-node01:~# ls /disks/vol1/
  • 创建PV
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat local-pv-demo.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv-demo
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local
local:
path: /disks/vol1 #将本地磁盘作为目录,事先存在。
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname #匹配的节点标签
operator: In
values:
- k8s-node01 #PV绑定的节点名称
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f local-pv-demo.yaml
persistentvolume/local-pv-demo created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
local-pv-demo 5Gi RWO Delete Available local 4s

3、创建PVC

  • 由于PVC是创建的延迟绑定的,所以创建完成后处于Pending 状态
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat pvc-localpv-demo.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-localpv-demo
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f pvc-localpv-demo.yaml
persistentvolumeclaim/pvc-localpv-demo created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-mysql-0 Bound pvc-7785640d-623d-4dd6-90ff-0ce026254733 10Gi RWO openebs-hostpath 5d13h
pvc-demo Bound pv-nfs-demo 5Gi RWX 96m
pvc-localpv-demo Pending local 6s

三、Pod消费PVC

  • 由于可消费的PVC只在节点1,所以Pod被调度到节点1
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat pod-with-localpv.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-with-localpv
spec:
containers:
- name: redis
image: redis:7-alpine
ports:
- containerPort: 6379
name: redis
volumeMounts:
- mountPath: "/data"
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-localpv-demo
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f pod-with-localpv.yaml
pod/pod-with-localpv created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-with-localpv 1/1 Running 0 22s 10.244.2.32 k8s-node01 <none> <none>
  • PVC也被Bound
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-mysql-0 Bound pvc-7785640d-623d-4dd6-90ff-0ce026254733 10Gi RWO openebs-hostpath 5d13h
pvc-demo Bound pv-nfs-demo 5Gi RWX 104m
pvc-localpv-demo Bound local-pv-demo 5Gi RWO local 7m45s

k8s之存储卷local PV的更多相关文章

  1. k8s volume存储卷

    k8s volume存储卷   介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价, ...

  2. k8s之存储卷及pvc

    1.存储卷概述 因为pod是有生命周期的,pod一重启,里面的数据就没了,所以我们需要数据持久化存储,在k8s中,存储卷不属于容器,而是属于pod,也就是说同一个pod中的容器可以共享一个存储卷,存储 ...

  3. K8s的存储卷使用总结

    K8s的存储卷: 它有四种存储卷: 1. emptyDir: 空目录,这种存储卷会随着Pod的删除而被清空,它一般作为缓存目录使用,或临时目录, 当做缓存目录时,通常会将一块内存空间映射到该目录上,让 ...

  4. k8s系列---存储卷pv/pvc。configMap/secert

    因为pod是有生命周期的,pod一重启,里面的数据就没了.所以我们需要数据持久化存储. 在k8s中,存储卷不属于容器,而是属于pod.也就是说同一个pod中的容器可以共享一个存储卷. 存储卷可以是宿主 ...

  5. K8S当中的本地卷(Local PV)的使用

    Local PV是从kuberntes 1.10开始引入,本质目的是为了解决hostPath的缺陷.通过PV控制器与Scheduler的结合,会对local PV做针对性的逻辑处理,从而,让Pod在多 ...

  6. k8s volume存储卷(四)

    介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价,首先,kubernetes中的v ...

  7. k8s的存储卷

    存储卷查看:kubectl explain pods.spec.volumes 一.简单的存储方式 1)2个容器之间共享存储..(删除则数据消失) apiVersion: v1 kind: Pod m ...

  8. K8s存储卷、pv和pvc的使用

    emptyDIR 临时目录 hostPath :使用主机的路径 网络存储: 传统的设备存储:NAS,SAN 分布式存储:glusterfs,rbd,cephfs 云存储:EBS,Azure,阿里云的 ...

  9. Kubernetes 搭建 ES 集群(存储使用 local pv)

    一.集群规划 由于当前环境中没有分布式存储,所以只能使用本地 PV 的方式来实现数据持久化. ES 集群的 master 节点至少需要三个,防止脑裂. 由于 master 在配置过程中需要保证主机名固 ...

  10. 12.k8s的存储卷创建过程

    数据持久化需要数据卷.kubernetes生态提供海量的存储驱动和存储使用方式. [root@master song]# cat pod-demo.yml apiVersion: v1 kind: P ...

随机推荐

  1. 手把手带你快速上手香橙派AIpro

    本文分享自华为云社区<香橙派AIpro快速上手指南>,作者:昇腾CANN. 1 前言 作为业界首款基于昇腾深度研发的AI开发板,Orange Pi AIpro无论在外观上.性能上还是技术服 ...

  2. Jmeter如何分布式执行脚本?

    Jmeter分布式执行原理: JMeter分布式执行时,选择其中一台作为调度机(master),其他机器作为执行机(slave): master会在本地编辑好jmx压测脚本,执行时,master将jm ...

  3. Java 常用类 String的常用方法(1)

    1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 import java.sql.SQLOutput; 6 impo ...

  4. C++ //内建函数对象 算数仿函数 关系仿函数 //逻辑仿函数

    1 //内建函数对象 算数仿函数 关系仿函数 //逻辑仿函数 2 #include<iostream> 3 #include<string> 4 #include<fun ...

  5. php的php-fpm

    FastCgi与PHP-fpm到底是个什么样的关系 昨晚有一位某知名在线教育的大佬问了我一个问题,你知道php-fpm和cgi之间的关系吗?作为了一个5年的phper了,这个还不是很简单的问题,然后我 ...

  6. 闭关修炼180天----手写迷你版的tomcat-Minicat

    手写迷你版的tomcat-Minicat 小谈Tomcat Tomcat请求处理⼤致过程 Tomcat是⼀个Http服务器(能够接收并且处理http请求,所以tomcat是⼀个http服务器) 我们使 ...

  7. Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface-项目启动报错

    一.问题由来 周日下午项目在进行测试时,有些东西需要临时修改,自己已经打好一个包部署到测试服务器进行部署.在测试过程中发现一个问题,就是 现在的代码跑起来是没问题的,只是其他人又的东西还没做,所以暂时 ...

  8. PE文件手工压缩

    序 本文要压缩的PE文件来自软件漏洞这门课上布置的作业,代码逻辑很简单,直接运行就能看出来,就是调库来弹两个对话窗口.笔者主要记录一下对这个文件的分析和一步步实现手工压缩的过程.在此提供原文件的下载方 ...

  9. 基于Linux的DockerFile添加中文字体

    FROM openjdk:8u332-oraclelinux7 #RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk ...

  10. 大端(big endian) 小端(little endian) --- 在多字节存储 和 多字节通信中的含义(我还是太年轻了)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...