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

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

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

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


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


三、操作演示

###系统管理员预先创建PV ###

apiVersion: v1

kind: PersistentVolume

metadata:

name: nas-csi-pv

spec:

capacity:

storage: 5Gi  #该volume的总容量大小

accessModes:

- ReadWriteMany # 该volume可以被多个node上的pod挂载使用且都具有读写权限

persistentVolumeReclaimPolicy: Retain #该volume使用后被release之后的回收策略

csi:

driver: nasplugin.csi.alibabacloud.com  #指定由什么volume plugin来挂载该volume(需要提前在node上部署)

volumeHandle: data-id

volumeAttributes:

host: "***.cn-beijing.nas.aliyuncs.com"

path: "/k8s"

vers: "4.0"

###用户创建PVC###

#nas-pvc与nas-csi-pv匹配,将由

# PersistentVolumeController将两者

# bound到一起

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: nas-pvc

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: 5Gi

###用户创建Pod ###

...

spec:

containers:

- name: nginximage: nginx:1.7.9

ports:

- containerPort: 80

volumeMounts:

- name: nas-pvc

mountPath: /data

volumes:

- name: nas-pvc

persistentVolumeClaim:

claimName: nas-pvc

Dynamic Volume Provisioning

###系统管理员创建###

l # StorageClass 就像动态创建PV的模板,为创建 PV 对象提供必要的参数

apiVersion: storage.k8s.iolv1

kind: StorageClass

metadata:

name: csi-disk

l #指定使用什么 volume plugin 来 create/deletelattach/detach/mount/unmount 新 PV #该 volume plugin 需要部署到 k8s cluster 中

provisioner: diskplugin.csi.alibabacloud.com

parameters:

regionld: cn-Beijing

zoneld: cn-beijing-b

fsType: ext4

type: cloud_ssd

reclaimPolicy: Delete

1、PV Spec 其他重要字段解析

l Capacity:存储总空间

AccessModes: PV 访问策略控制列表,必须同 PVC 的访问策略控制列表匹配才能绑定( bound )

. ReadWriteOnce 只允许单 node 访问

. ReadOnlyMany 允许多个 node 只读访问

. ReadWriteMany 允许多 node 读写访问

一个PV可以设置多个访问策略,PVC 与 PV bound 时,PV Controller 会优先找到 AccessModes 列表最短并且匹配 PVC AccessModes 列表的 PV 集合,然后从该集合中找到 Capacity 最小且符合 PVC size 需求的 PV 对象

PersistentVolumeReclaimPolicy: PV 被 release 之后(与之 bound 的 PVC 被删除)回收再利用策略

. Recycle (已废弃)

. Delete: volume 被 released 之后直接 delete,需要 volume plugin 支持

. Retain:默认策略,由系统管理员来手动管理该 volume

StorageClassName: PVC 可通过该字段找到相同值的 PV(静态 provisioning ) ,也可通过该字段对应的 storageclass 从而动态 provisioning 新 PV 对象

NodeAffinity:限制可以访问该 volume 的 nodes,对使用该 volume 的 pod 的调度有影响(因为使用该 volume 的 pod 只能调度能访问该 PV 的 node 上才能正常工作)

2、PV 状态流转

image.png

说明:到达 released 状态的 PV 无法根据 Reclaim Policy 回到 available 状态而再次 bound 新的 PVC。此时,如果想复用原来 PV 对应的存储中的数据,只有两种方式:

1.复用 old PV 中记录的存储信息新建 PV 对象。

2.直接从 PVC 对象复用,即不 unbound PVC 和 PV (即:StatefulSet 处理存储状态的原理)。

 

四、架构设计

image.png

Pod 创建, mount PV 到启动 container 流程

PV provision/attach 流程

csi 是存储插件实现的官方推荐方式,分为两种:

l 第一种是由社区区域实现的通用的部分 csi-provisioner、csi-attacher

l 对接云存储服务

image.png

分为三个阶段:

1、应用提交完 PVC 由 csi-provisioner 创建存储

2、由 create new Pv 生成 bound

3、提交 pod 调度 node,运行的 node 被选出来之后会被 ADController watch 到我的 pod 选中了 node,然后去插到 pod 中使用了哪些 PV,会生成VolumeAttachment 的对象,经过 csi-attacher attach 到 csi-controller-server 中,最后到 Cloud StorageVendor 中

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
测试技术
你真的知道什么是冒烟测试吗?
大家好,我是阿萨。日常工作中,经常都会提到冒烟测试。那么什么是冒烟测试呢?
3705 0
你真的知道什么是冒烟测试吗?
|
安全 编译器 Go
【Golang】如何声明弃用(Deprecated)
【Golang】如何声明弃用(Deprecated)
2591 5
|
机器学习/深度学习 数据库 数据格式
深度学习之化学反应预测
基于深度学习的化学反应预测是通过深度神经网络模型来分析和预测化学反应的过程及其产物。传统的化学反应预测依赖于专家知识和实验验证,而深度学习的引入使得可以从大规模的化学数据中自动学习复杂的反应规律,提升预测的精度与效率。
523 3
|
存储 Kubernetes 调度
【赵渝强老师】K8s的有状态控制器StatefulSet
在Kubernetes中,StatefulSets用于部署有状态应用程序,提供持久存储和唯一标识符。与Deployment不同,StatefulSets确保Pod的标识符在重新调度后保持不变,适用于需要稳定网络标识符和持久存储的场景。本文介绍了StatefulSets的创建、扩容与缩容、更新与回滚等操作,并提供了具体示例和视频讲解。
483 0
|
存储 安全 Linux
s3fs挂载S3对象桶
s3fs(Simple Storage Service File System)是一个基于FUSE(Filesystem in Userspace)的文件系统,它允许将S3(Simple Storage Service)或其他兼容S3 API的对象存储服务挂载到本地文件系统中,从而能够像访问本地磁盘一样访问远程对象存储。以下是通过s3fs挂载OBS(Object Storage Service,对象存储服务,这里以华为云OBS为例)对象桶的基本步骤: ### 一、环境准备 1. **安装s3fs**: - 对于CentOS系统,可以使用yum安装s3fs-fuse: ```
2202 7
|
DataWorks 网络协议 Java
DataWorks常见问题之新建StarRocks数据源测试链接不通如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
277 1
|
Java API 开发者
针对Java开发者的RESTful API设计与实现指南
本文是一份针对Java开发者的RESTful API设计与实现指南。RESTful API采用表述性状态转移(REST)架构风格,提供无状态、统一接口的服务。在Java中,可通过Spring Boot框架快速构建RESTful API,利用Spring MVC处理HTTP请求,并支持数据绑定、验证及异常处理等功能。此外,还介绍了版本控制、安全性加强、文档编写与测试等最佳实践,帮助开发者打造高性能且可靠的API服务。
351 0
|
JSON 搜索推荐 API
使用Elasticsearch进行全文搜索:技术深度解析
【5月更文挑战第16天】本文深入解析了使用Elasticsearch进行全文搜索的技术细节。Elasticsearch是一个基于Lucene的开源搜索引擎,支持全文、结构化搜索和数据分析,具备优秀的扩展性。文中介绍了其核心功能,包括全文搜索、结构化搜索、分析和可扩展性。详细步骤涉及安装配置、数据准备、创建索引、导入数据、构建查询及结果处理。Elasticsearch凭借其高效性能和灵活性,成为企业全文搜索的首选解决方案。
|
存储 Kubernetes 应用服务中间件
大白话说明白K8S的PV / PVC / StorageClass(理论+实践)
本文主要通过大白话说明白PV、PVC的概念和原理,再说说StorageClass的作用,最后通过实践加深理解。
大白话说明白K8S的PV / PVC / StorageClass(理论+实践)
|
存储 Kubernetes 安全
应用存储和持久化数据卷:核心知识(一)|学习笔记
快速学习应用存储和持久化数据卷:核心知识(一)
155 0