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

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
存储 Kubernetes 调度
K8S常见的持久化(存储)方案用法详解
K8S常见的持久化(存储)方案用法详解
346 3
|
存储 缓存 安全
通用缓存存储设计实践
通用缓存存储设计实践
4655 3
通用缓存存储设计实践
|
存储
数据在内存中的存储【下篇】
数据在内存中的存储【下篇】
75 0
|
存储 算法 数据安全/隐私保护
带你读《存储漫谈:Ceph原理与实践》——3.2.4 元数据 / 数据布局
带你读《存储漫谈:Ceph原理与实践》——3.2.4 元数据 / 数据布局
|
存储 缓存 固态存储
数据存储方式——KVELL:快速持续键值存储的设计与实现
数据存储方式——KVELL:快速持续键值存储的设计与实现
数据存储方式——KVELL:快速持续键值存储的设计与实现
|
存储 Kubernetes 测试技术
应用存储和持久化数据卷:存储快照与拓扑调查(一)|学习笔记
快速学习应用存储和持久化数据卷:存储快照与拓扑调查(一)
135 0
应用存储和持久化数据卷:存储快照与拓扑调查(一)|学习笔记
|
存储 Kubernetes 调度
应用存储和持久化数据卷:存储快照与拓扑调查(二)|学习笔记
快速学习应用存储和持久化数据卷:存储快照与拓扑调查(二)
87 0
应用存储和持久化数据卷:存储快照与拓扑调查(二)|学习笔记
|
Web App开发 缓存 负载均衡
缓存基础(一)|学习笔记
快速学习 缓存基础(一)
102 0
缓存基础(一)|学习笔记
|
存储 缓存 边缘计算
缓存基础(二)|学习笔记
快速学习 缓存基础(二)
117 0
缓存基础(二)|学习笔记
|
存储 Kubernetes 安全
应用存储和持久化数据卷:核心知识(一)|学习笔记
快速学习应用存储和持久化数据卷:核心知识(一)
82 0