应用存储和持久化数据卷:核心知识(一)|学习笔记

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 快速学习应用存储和持久化数据卷:核心知识(一)

开发者学堂课程【Kubernetes 入门 应用存储和持久化数据卷:核心知识(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/51/detail/1015


应用存储和持久化数据卷:核心知识(一)


 内容介绍:

一、Volumes 介绍

二、用例解读

三、操作演示

四、架构设计

五、下节预告

 

一、Volumes 介绍

1、Pod Volumes

l 如果一个 Pod 中某一个容器异常退出,被 kubelet 拉起如何保证之前产生的重要数据不丢?

l 同一个 Pod 的多个容器如何共享数据?

2、Kubernetes Volume 类型:

l 本地存储: emptydir/hostpath …

l 网络存储:

in-tree: awsElasticBlockStore/gcePersistentDisk/nfs …out-of-tree: flexvolume/csi等网络存储volume plugins

l Projected Volume: secret/configmap/downwardAPl/serviceAccountToken

3、PVC 与 PV 体系

Persistent Volumes

Pod 中声明的 volume 的生命周期与 Pod 相同,以下常见场景:

1. Pod销毁重建(如 Deployment 管理的 Pod 镜像升级)

2.宿主机故障迁移(如 StatefulSet 管理的 Pod 带远程 volume 迁移)

3.多Pod共享同一个数据 volume

4.数据 volume snapshot, resize 等功能的扩展实现

不足之处:

使用 Pod Volumes 无法准确表达数据 volume 复用/共享语义,新功能扩展很难实现。

优化:

如果能将存储与计算分离,使用不同的组件(Controllers)管理存储与计算资源,解耦 Pod 与 Volume 的生命周期关联,可以很好的解决这些场景下的问题。

 

二、用例解读

1、PersistentVolumeClaim ( PVC)设计意图

有了PV,为什么又设计了 PVC?

l 职责分离,PVC 中只用声明自己需要的存储 size、access mode (单 node 独占还是多 node 共享?只读还是读写访问?)等业务真正关心的存储需求(不用关心存储实现细节),PV 和其对应的后端存储信息则由交给 cluster admin 统一运维和管控,安全访问策略更容易控制。

l PVC 简化了 User 对存储的需求,PV 才是存储的实际信息的承载体,通过 kube-controller-manager 中的 PersisentVolumeController 将 PVC 与合适的 PV bound 到一起,从而满足 User 对存储的实际需求。

l PVC 像是面向对象编程中抽象出来的接口,PV 是接口对应的实现。

2、Static Volume Provisioning

Static Volume Provisioning 的不足:Cluster Admin 需要提前规化或预测存储需求,而 User 的需求是多样化的,很容易导致 User 提交的 PVC 找不到合适的 PV。

更好的方式:

Cluster Admin 只创建不同类型存储的模板,User 在 PVC 中指定使用哪种存储模板以及自己需要的大小、访问方式等参数,然后 K8s 自动生成相应的 PV 对象。

3、Dynamic Volume Provisioning

这里的 StorageClass 就是前文所说的创建 PV 的模板,它包含了创建某种具体类型 PV 所需的参数信息,User 无需关心这些 PV 的细节。

而 K8s 则会结合 PVC 和 SC 两者的信息动态创建 PV 对象。

4、Pod Volumes 使用

spec.volumes 声明 pod 的 volumes 信息

spec.containers.volumeMounts 声明container 如何使用 pod 的 volumes

多个 container 共享同一个 volume 时,可以通过.spec.containers.volumeMounts.subPath 隔离不同容器在同个 volume 上数据存储的路径

5、Static Volume Provisioning

以使用阿里云文件存储(NAS)为例:

Ø Cluster Admin:

l 通过阿里云文件存储控制台,创建 NAS 文件系统和添加挂载点。

l 创建 PV 对象,将 NAS 文件系统大小,挂载点,以及 PV 的 access mode,reclaim policy 等信息添加到 PV 对象中。

User:

1.创建 PVC 对象,声明存储需求。

2.创建应用 pod 并通过在.spec.volumes 中通过 PVC 声明 volume,通

过.spec.containers.volumeMounts 声明 container 挂载使用该 volume。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
存储 Kubernetes 调度
K8S常见的持久化(存储)方案用法详解
K8S常见的持久化(存储)方案用法详解
357 3
|
4月前
|
存储
C进阶:数据在内存中的存储(2)
C进阶:数据在内存中的存储(2)
|
4月前
|
存储 编译器 C语言
C进阶:数据在内存中的存储(1)
C进阶:数据在内存中的存储(1)
|
存储 Kubernetes 应用服务中间件
应用存储和持久化数据卷:核心知识(二)|学习笔记
快速学习应用存储和持久化数据卷:核心知识(二)
115 0
应用存储和持久化数据卷:核心知识(二)|学习笔记
|
存储 小程序 编译器
数据在内存中的存储【上篇】
数据在内存中的存储【上篇】
106 1
|
存储 小程序 编译器
C进阶:数据在内存中的存储
这样我们就彻底理解了浮点数在内存中的存储规则。还是开头说的,其实这部分内容真的很难考到,学习这些知识更像是一种修炼内功,让我们理解的更加透彻,拓展我们的知识面,如果遇到这样的现象能够去解释,关于素养的这种实际价值就靠自己体会了。好了,以上就是C进阶数据在内存中的存储内容。
C进阶:数据在内存中的存储
|
存储
数据在内存中的存储【下篇】
数据在内存中的存储【下篇】
75 0
|
存储 算法 数据安全/隐私保护
带你读《存储漫谈:Ceph原理与实践》——3.2.4 元数据 / 数据布局
带你读《存储漫谈:Ceph原理与实践》——3.2.4 元数据 / 数据布局
|
存储 Swift 索引
带你读《存储漫谈:Ceph原理与实践》——2.1 数据寻址方案
带你读《存储漫谈:Ceph原理与实践》——2.1 数据寻址方案
|
存储 文件存储
《数据库系统内 幕》日志结构存储
《数据库系统内 幕》日志结构存储
221 0