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

devtools/2024/12/22 13:14:08/

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

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


专栏订阅入口

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:前文有专题介绍过 ConfigMap 与 Secret,严格意义上说,它们为 Pod 内的容器提供了配置持久化注入的能力,也可以归属到持久存储

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

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


四、存储挂载(示例)
# deployment.yaml
...spec:containers:- name: demo-containerimage: demo-image:latestports:- containerPort: 80volumeMounts:- name: demo-emptymountPath: /data_tmp- name: demo-hostmountPath: /data_host- name: demo-pvcmountPath: /data_pvc- name: demo-configmapmountPath: /etc/configmap.conf- name: demo-secretmountPath: /etc/secret.confvolumes:- 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
...


http://www.ppmy.cn/devtools/97883.html

相关文章

“双指针”算法上篇

『 你 的 名 字 』高帧4K动漫素材,无水印,需要自取! 题目: 一 移动零 1.题目链接:移动零 2. 分析 解法一:暴力求解 就是新开一个数组,大小与原数组大小一致,只要不是数字0就进行…

(四)Flink Transformation 数据转换

用户通过算子能将一个或多个 DataStream 转换成新的 DataStream,在应用程序中可以将多个数据转换算子合并成一个复杂的数据流拓扑。 这部分内容将描述 Flink DataStream API 中基本的数据转换 API。 目录 Map(DataStream → DataStream) FlatMap(DataStream → DataStre…

【前端面试】javascript全栈开发——深挖nestJS项目

注意区别于nextJS框架——web全栈应用框架。 NestJS NestJS 是一个现代的、用于构建可扩展的 Node.js 服务器端应用程序的框架,它使用 TypeScript 构建,结合了 OOP、FP 和 FRP (详见下面)。 NestJS 提供了一个开箱即用的应用架构,允许开发者和团队创建高度可测试、可扩展、…

Compose(11)APT阶段的任务

在 Android 开发中,使用 Jetpack Compose 的声明式 UI 在编译的 APT(Annotation Processing Tool,注解处理工具)阶段可能会进行以下一些操作: 一、生成代码 可组合函数分析: APT 可以分析开发者编写的可组…

代理模式:静态代理和动态代理

目录 一、静态代理 1、优点 2、 缺点 3、示例 二、动态代理 1、优点 2、 缺点 3、示例 三、总结 在Java中,代理模式是一种结构型设计模式,它允许你在不改变目标对象代码的情况下,为目标对象提供一个代理对象,用以控制访问和增强功…

别再无效清理微信内存啦,这才是正确清理内存的方式

微信作为我们日常生活中必不可少的社交工具,随着时间的积累,往往会占据手机大量宝贵的存储空间。 如何在保证重要信息不丢失的同时,有效地管理和清理微信中的垃圾文件和无用数据,成为了一个值得探讨的话题。 本文将从几个方面介…

yum小bug

这个错误是在克隆的机子上安装mysql时,查看有无mysql发现的 [rootwebserve-2 backup] # yum list installed | grep mysql Repository cr is listed more than once in the configuration Repository fasttrack is listed more than once in the configuration 这…

HarmonyOs透明弹窗(选择照片弹窗样式)

1.鸿蒙中需要实现一个如下图的弹窗 2.由上图中可以得出,只需要三个Text组件依次向下排列,弹窗背景设置透明即可,弹窗代码如下(仅展示弹窗样式): /**** 自定义选择图片弹窗** 外部定义需要导出*/ CustomDialog //自定义弹窗 export…