【K8s】专题十二(1):Kubernetes 存储简介

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

Linux 专栏 | Docker 专栏 | Kubernetes 专栏


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)


目录

一、基本介绍

二、相关概念

三、存储分类

四、存储挂载(示例)


一、基本介绍

在 Kubernetes 中,存储是实现集群数据持久化的关键,它允许用户在 Kubernetes 环境中存储、管理和访问数据。


二、相关概念
  • PersistentVolume(PV):在 Kubernetes 中,PV(持久化卷)是一种与存储相关的资源对象,可以定义存储容量、访问模式、回收策略、存储插件等信息。PV 具有独立的生命周期,不会随着 Pod 的销毁被删除

  • PersistentVolumeClaim(PVC):在 Kubernetes 中,PVC(持久化卷声明)是一种与存储相关的资源对象,可以定义申请容量、访问模式等内容。PVC 与 PV 之间的关系是请求与分配的关系

  • StorageClass(SC):在 Kubernetes 中,SC(存储类)是一种与存储相关的资源对象,可以根据 PVC 的申请动态创建 PV 对象

  • Volumes:在 Kubernetes 中,Volumes 可以定义 Pod 内部的存储空间

  • Kubernetes 存储供应模式:

    • 静态模式:由集群管理员预先手动创建 PV 对象,并与符合条件的 PVC 对象绑定

    • 动态模式:StorageClass 会根据 PVC 对象的申请,动态创建 PV 对象并与该 PVC 对象绑定


三、存储分类

从 Pod Volumes 支持类型的维度看,Kubernetes 的存储大致可以分为:

  • 临时存储
    • EmptyDir:可以为处于同一 Pod 内的容器提供数据共享能力(如缓存数据),这些数据临时存储在 Pod 所在集群节点上自动分配的空目录中,会随着 Pod 的销毁被删除
  • 持久存储
    • HostPath:可以将 Pod 所在集群节点上指定的目录直接挂载到 Pod 内的容器中,只适用于单节点集群或 Pod 与集群某个节点绑定的场景
    • PersistentVolume 与 PersistentVolumeClaim:PersistentVolume 与 PersistentVolumeClaim(持久化卷声明),可以灵活分配和释放存储资源,提高存储的灵活性和可管理性
    • ConfigMap 与 Secret:前文有专题介绍过 ConfigMapSecret,严格意义上说,它们为 Pod 内的容器提供了配置持久化注入的能力,也可以归属到持久存储

从 PersistentVolume 插件支持类型的维度看,Kubernetes 的存储大致可以分为:

  • 本地存储:使用集群节点上指定的目录来模拟网络附加存储,但只适用于单节点集群或 Pod 与集群某个节点绑定的场景,包含 HostPath、Local 两种方式
  • 外置存储
    • NFS 存储:使用集群以外的 NFS 存储服务作为存储后端,是最常用的一种方式
    • CSI 存储:使用集群以外满足 CSI 标准的存储服务作为存储后端。CSI 插件具有解耦存储系统和容器编排平台、插件化架构以及动态卷生命周期管理的特点
    • 云存储:使用集群以外云服务提供商的块存储服务作为存储后端,如 AWS EBS、Azure Disk 和 Google Cloud Persistent Disk 等
    • 分布式存储:使用集群以外具有分布式架构的存储服务作为存储后端,支持高可用性和容错能力,如 Ceph、GlusterFS 等

四、存储挂载(示例)
bash 复制代码
# deployment.yaml
...
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: demo-empty
          mountPath: /data_tmp
        - name: demo-host
          mountPath: /data_host
        - name: demo-pvc
          mountPath: /data_pvc
        - name: demo-configmap
          mountPath: /etc/configmap.conf
        - name: demo-secret
          mountPath: /etc/secret.conf
      volumes:
      - name: demo-empty                    # EmptyDir 类型
        emptyDir: {}
      - name: demo-host                     # HostPath 类型
        hostPath:
          path: /data
      - name: demo-pvc                      # PVC 类型
        persistentVolumeClaim:
          claimName: demo-pvc
      - name: demo-configmap                # ConfigMap 类型
        configMap:
          name: demo-configmap
      - name: demo-secret                   # Secret 类型
        secret:
          secretName: demo-secret
...
相关推荐
键盘鼓手苏苏14 小时前
AI 音频生成流水线:异步任务要有进度和取消
云原生·kubernetes·k8
雨辰AI14 小时前
K8s 达梦数据守护集群部署|容器化高可用生产落地指南
云原生·容器·kubernetes
张忠琳15 小时前
【NPU】Ascend Docker Runtime v26.0.1 之一 runtime/main.go — 超深度分析
云原生·容器·架构·kubernetes·npu·docker-runtime
画中有画15 小时前
云原生可观测性体系设计及其应用
云原生
Freed&16 小时前
K8s 1.29 集群部署文档
云原生·容器·kubernetes
人间凡尔赛18 小时前
告别冷启动!WebAssembly + Spin 实战:Serverless 延迟从 1 秒降到 1 毫秒
后端·云原生·serverless·webassembly·spin
扶疏5251 天前
Prometheus+Prometheus Adapter+metrics-server+Ingress实现k8s水平自动扩缩容(HPA)
容器·kubernetes·prometheus
张忠琳1 天前
【NPU】Ascend Docker Runtime v26.0.1 系统级架构分析
云原生·容器·kubernetes·npu·docker-runtime
这是谁的博客?1 天前
【中阶·融合】如何隔离多租户 AI 推理平台的 GPU 资源:从 Namespace 到 MIG/Kata 的五层纵深防御
人工智能·ai·云原生·kubernetes·gpu·多租户·ai安全
湫默1 天前
Kubernetes 基础集群部署
云原生·容器·kubernetes