一、简介

  • 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. nmcli命令详解(创建热点,连接wifi,管理连接等)

    目录 简述 语法 比较有用的选项(OPTION) 对象 general对象(常规信息) 用途 语法 networking对象(整个网络) 用途 语法 命令示例 radio对象(无线开关) 用途 语法 ...

  2. EFCore之命令行工具

    介绍 EFCore工具可帮助完成设计数据库时候的开发任务,主要用于通过对数据库架构进行反向工程来管理迁移和搭建DbContext和实体类型.EFCore .NET命令行工具是对跨平台.NET Core ...

  3. 在winform中如何嵌入第三方软件窗体✨

    相关win32api的学习 SetParent [DllImport("user32.dll ", EntryPoint = "SetParent")] pri ...

  4. RGB、HSV、HSL和CMYK颜色空间

    目录 简介 RGB(红绿蓝)颜色空间 HSV(色调.饱和度.亮度)颜色空间 HSL(色调.饱和度.亮度)颜色空间 CMYK(青.品红.黄.黑)颜色空间 简介 这四种颜色空间在不同的应用领域有不同的用途 ...

  5. WPF之认识XAML

    目录 新建项目 剖析XAML代码 参考资料 新建项目 在Visual Studio 2019中使用WPF项目模板建立一个最简单的WPF项目,如下图所示: 可以看到,项目里面主要有两个分支: App.x ...

  6. 用于演示文稿的新 Dapr 幻灯片

    Dapr 官方博客上(https://blog.dapr.io/posts/2024/03/10/new-dapr-slide-deck-for-your-presentations/)发布了一个新的 ...

  7. Client请求外部接口标准处理方式

    简单记录下client外部请求代码的我认为比较标准的书写格式 public List<GdtDailyBalanceReportAO> getGdtDailyReportList2(Lon ...

  8. Android 使用系统JAR包

    项目开发过程中,经常有需要到系统jar包,导入系统jar包后,发现无法正常编译通过,针对此问题,下文简述下如何导入framework.jar ,并正常使用 1.导入framework.jar ,使用c ...

  9. Flutter如何状态管理

    目录介绍 01.什么是状态管理 02.状态管理方案分类 03.状态管理使用场景 04.Widget管理自己的状态 05.Widget管理子Widget状态 06.简单混合管理状态 07.全局状态如何管 ...

  10. 记录--你的网站如何接入QQ,微信登录

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 主要实现步骤 对接第三方平台,获取第三方平台的用户信息. 利用该用户信息,完成本应用的注册. qq登录接入 接入前的配置 qq互联 登录后 ...