首页 > 其他分享 >使用Local Persistent Volume 部署有状态工作负载

使用Local Persistent Volume 部署有状态工作负载

时间:2024-01-15 11:14:09浏览次数:24  
标签:busybox name Local storage Persistent Volume test local metadata

本文分享自华为云社区《使用Local Persistent Volume 部署有状态工作负载》,作者: 张俭。

使用Local Persistent Volume 部署有状态工作负载

本教程以部署Demo StatefulSet为例,指导您利用 LocalPersistentVolume (即本地持久卷)技术使用标准 PVC 对象访问本地磁盘。

安装kubernetes集群

略,可参考官方文档

创建WaitForFirstConsumer 绑定模式的StorageClass

此模式指示 Kubernetes 延迟PVC的绑定,直到有Pod使用为止。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

在对应的主机上准备卷

kubernetes003主机

mkdir -p /data/volumes/pv0
chmod 777 /data/volumes/pv0

kubernetes002主机

mkdir -p /data/volumes/pv1
chmod 777 /data/volumes/pv1

创建两个LocalPersistentVolume

注意,pv和host节点进行亲和处理,这是为了让k8s把对应的pod调度到对应的卷

apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-local-pv-0
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data/volumes/pv0
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - kubernetes003
apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-local-pv-1
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /data/volumes/pv1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - kubernetes002

创建两个pvc

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-pvc-busybox-0
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  volumeName: test-local-pv-0
  resources:
    requests:
      storage: 10Gi
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-pvc-busybox-1
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage
  volumeName: test-local-pv-1
  resources:
    requests:
      storage: 10Gi

创建ZooKeeper StatefulSet

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: busybox
  labels:
    app: busybox
spec:
  replicas: 2
  selector:
    matchLabels:
      app: busybox
  serviceName: "busybox"
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ['sh', '-c', 'echo "The local volume is mounted!" > /mnt/test.txt && sleep 3600']
        imagePullPolicy: Always
        volumeMounts:
        - name: test-pvc
          mountPath: /mnt
  volumeClaimTemplates:
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-pvc
    spec:
      storageClassName: local-storage

总结

本地持久卷相对于远程持久存储的主要优势在于性能:与远程存储系统相比,本地磁盘通常提供更高的 IOPS 和吞吐量以及更低的延迟。 Kubernetes 本地卷具有以下特性:

  • PersistentVolumeClaim 将在绑定本地持久卷之前等待 POD 出现
  • 一旦本地持久卷绑定到声明,即使请求的 POD 已死亡或已被删除,它也会保持绑定状态
  • 新的 POD 可以通过引用相同的 PersistentVolumeClaim 附加到本地卷中的现有数据
  • 与 NFS 共享类似,Kubernetes 持久化本地卷允许多个 POD 具有读/写访问权限
  • 良好工作负载的示例包括软件定义的存储系统和复制数据库。 其他类型的应用程序应继续使用高可用性、可远程访问的持久存储。

参考

https://lapee79.github.io/en/article/use-a-local-disk-by-local-volume-static-provisioner-in-kubernetes/

点击关注,第一时间了解华为云新鲜技术~

 

标签:busybox,name,Local,storage,Persistent,Volume,test,local,metadata
From: https://www.cnblogs.com/huaweiyun/p/17964974

相关文章

  • ThreadLocal真的会造成内存泄漏吗?
    ThreadLoca在并发场景中,应用非常多。那ThreadLocal是不是真的会造成内存泄漏?今天给大家做一个分享,个人见解,仅供参考。1、ThreadLocal的基本原理简单介绍一下ThreadLocal,在多线程并发访问同一个共享变量的情况下,如果不做同步控制的话,就可能会导致数据不一致的问题,所以,我们需要使......
  • 详解Linuxrc、rcS、rc.local、Profile
    /Linuxrc执行init进程初始化文件。主要工作是把已安装根文件系统中的/etc安装为ramfs,并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件;接着Linuxrc重新构建文件分配表inittab;之后执行系统初始化进程/sbin/init。/mnt/etc/init.d/rcS完成各个文件系统的......
  • js localeCompare()方法
    最后一个与模式匹配相关的字符串方法是split()。这个方法会根据传入的分隔符将字符串拆分成数组。作为分隔符的参数可以是字符串,也可以是RegExp对象。(字符串分隔符不会被这个方法当成正则表达式。)还可以传入第二个参数,即数组大小,确保返回的数组不会超过指定大小。来看下面的......
  • [转]JAVA使用LocalDate获取当前日期所在季度的开始日期和结束日期
    原文地址:JAVA使用LocalDate获取当前日期所在季度的开始日期和结束日期-yvioo-博客园需要使用jdk1.8及以上  /***获取当前日期所在季度的开始日期和结束日期*季度一年四季,第一季度:1月-3月,第二季度:4月-6月,第三季度:7月-9月,第四季度:10月-12月......
  • localstorage是什么
    Laravel是一个流行的PHP框架,它具有出色的可测试性,可以帮助开发人员在更短的时间内编写可靠的代码。但是,即使使用了这个框架,也可能会出现测试覆盖率较低的情况。测试覆盖率是指代码中已由测试案例覆盖的部分比例。测试覆盖率越高,代码质量越高。在本文中,我们将分享几种技巧,帮助您提......
  • Spring MVC 源码分析 - LocaleResolver 组件
    LocaleResolver组件LocaleResolver 组件,本地化(国际化)解析器,提供国际化支持回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 LocaleResolver 组件,可以回到《一个请求的旅行过程》中的 DispatcherServlet 的 processDispatchResult 方法中看看,如下:priv......
  • rhel配置ACFS集群文件系统时,asm cluster file systems和volume选项卡为灰色
    问题描述:rhel配置ACFS集群文件系统时,asmclusterfilesystems和volume选项卡为灰色.OS:rhel7.964位数据库:oracle11.2.0.4节点1192.168.133.191rac1节点2192.168.133.192rac21、异常重现在rhel7.964位系统上安装oracle11.2.0.4rac后,发现acfs和advm无法使用,如下ASMC......
  • 【设计模式】单例模式——利用ThreadLocal或CAS实现单线程内部的单例模式
    很多时候我们并不需要一个类创建的对象是全局唯一的,只需要保证在单个线程内是唯一的、线程安全的就可以。为了实现单线程内部的单例,我们可以用ThreadLocal或CAS实现。利用ThreadLocal实现先看代码:publicclassThreadLocalSingleton{privatestaticfinalThreadLocal<Thread......
  • NEXT-HOP-LOCAL的作用
    1、实验拓扑2、实验目的1)R1没有配置next-hop-local,观察R2中的bgp路由表中ebgp引入路由的下一跳2)1)R1配置next-hop-local,观察R2中的bgp路由表中ebgp引入路由的下一跳3、实验配置R1:[V200R003C00]#sysnameR1#snmp-agentlocal-engineid800007DB03000000000000snmp-agent #......
  • ThreadLocal:你不知道的优化技巧,Android开发者都在用
    引言在Android开发中,多线程是一个常见的话题。为了有效地处理多线程的并发问题,Android提供了一些工具和机制。其中,ThreadLocal是一个强大的工具,它可以使得每个线程都拥有自己独立的变量副本,从而避免了线程安全问题。本文将深入探讨Android中的ThreadLocal原理及其使用技巧,帮助你更......