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

简介: 快速学习应用存储和持久化数据卷:核心知识(一)

开发者学堂课程【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。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
并行计算 算法 计算机视觉
【MATLAB 】 EMD信号分解+模糊熵(近似熵)算法
【MATLAB 】 EMD信号分解+模糊熵(近似熵)算法
396 0
|
测试技术
你真的知道什么是冒烟测试吗?
大家好,我是阿萨。日常工作中,经常都会提到冒烟测试。那么什么是冒烟测试呢?
3705 0
你真的知道什么是冒烟测试吗?
|
存储 Kubernetes 应用服务中间件
应用存储和持久化数据卷:核心知识(二)|学习笔记
快速学习应用存储和持久化数据卷:核心知识(二)
199 0
应用存储和持久化数据卷:核心知识(二)|学习笔记
|
存储 Kubernetes 调度
【赵渝强老师】K8s的有状态控制器StatefulSet
在Kubernetes中,StatefulSets用于部署有状态应用程序,提供持久存储和唯一标识符。与Deployment不同,StatefulSets确保Pod的标识符在重新调度后保持不变,适用于需要稳定网络标识符和持久存储的场景。本文介绍了StatefulSets的创建、扩容与缩容、更新与回滚等操作,并提供了具体示例和视频讲解。
483 0
|
Java API 开发者
针对Java开发者的RESTful API设计与实现指南
本文是一份针对Java开发者的RESTful API设计与实现指南。RESTful API采用表述性状态转移(REST)架构风格,提供无状态、统一接口的服务。在Java中,可通过Spring Boot框架快速构建RESTful API,利用Spring MVC处理HTTP请求,并支持数据绑定、验证及异常处理等功能。此外,还介绍了版本控制、安全性加强、文档编写与测试等最佳实践,帮助开发者打造高性能且可靠的API服务。
351 0
|
网络协议 网络性能优化 数据安全/隐私保护
IPV4与IPV6之间的区别
IPv4(32位,42.9亿地址)面临枯竭,促成了IPv6(128位,近乎无限地址)的诞生。IPv6增强安全性,提供身份验证,使用灵活的ICMPv6和SLAAC配置地址,其十六进制表示法区别于IPv4的点分十进制。IPv6还优化了数据包处理,包含Flow Label以提升服务质量,使用AAAA记录进行DNS映射。随着需求增长,IPv6正逐步成为标准。
|
SQL 存储 Java
java通过拦截器实现项目每次执行sql耗时统计,可配置是否打印
java通过拦截器实现项目每次执行sql耗时统计,可配置是否打印
|
缓存 网络协议 算法
深入TCP协议——tcp_tw_reuse和tcp_tw_recycle
我们已经知道TCP四次挥手中,主动方在收到被动方的FIN数据包之后会进入TIME_WAIT状态等待2MSL的时间后才进入CLOSED。在 Linux 操作系统下,TIME_WAIT 状态的持续时间是 60 秒,这意味着这 60 秒内,客户端一直会占用着这个端口,这是有一定的开销的。如果如果主动关闭连接方的 TIME_WAIT 状态过多,占满了所有端口资源,则会导致无法创建新连接。
|
机器学习/深度学习 人工智能 文字识别
Yolov5+图像分割+百度AI接口——车牌实时检测识别系统
Yolov5+图像分割+百度AI接口——车牌实时检测识别系统
1024 0
Yolov5+图像分割+百度AI接口——车牌实时检测识别系统