【云驻共创】华为云云原生黄金课程06:Kubernetes持久化数据卷管理
1.课程目标
学完本课程后,您将能够:
- 了解 StatefulSetl的概念及使用
- 了解 Persistentvolumel概念及使用
- 了解 PersistentVolume claim的概念及使用
- 了解 Storage Class的概念及使用
2.前言
从上节课程中我们已经了解无状态应用了。
应用是为了某项特殊的任务而编写的程序。程序是由算法和数据组成的在生产环境中,除了一些无状态应用外,还有一部分应用需要将结果数据(也即:状态)缓存下来,并永久的记录在存储中,以供后续使用。
这类应用就是我们将要讨论的“有状态应用”,与“无状态应用”相比,我们期望“有状态应用”具有哪些能力呢?
1.计算维度
- 每个pod的名字需要是稳定的,不会发生变化的;
- pods之间的启动、升级、退出可以按照某种顺序控制的;
2.存储维度:
- 存储是持久的,拥有独立于pod的生命周期,不会随着pod的生命周期结束而销毁
- 每个pod与其使用的存储关系是稳定的,不会因升级等因素而发生变化
3.网络维度
- 每个pod的有独立、稳定的网络标识
3.有状态应用(Statefulset)概念介绍
3.1 简介
基于社区对有状态应用的通用需求,K8S设计了一种有状态应用对象也即: StatefulSet。它可以为用户提供一组具有稳定、有序、唯一特性的应用实例集合。如上图图所示:
1.稳定
- 稳定的 podName:{ sysName}-{序号[0-n]}
- 稳定的网络标识:{ podName}.{ headlesssvCName).{namespace}. svc.cluster. local
- 稳定的存储关系:{ volumeClaimTemplatesName}-{ podName}
2.有序
- 按照编号从小到大顺序的部署
- 按照编号从大到小进行删除:n~0
- 支持有序的扩缩容和升级策略
3.唯一
- 每个pod拥有一个唯一的网络标识:{nodAme}. {headlesssvCName}.{namespace).svc.cluster.local从下图可以看出,与 Deployment通过 Replicase来管理pod生命周期不同, Statefulset是直接管理pod的。
3.2 有状态应用(Statefulset)样例模板详解
3.3 常用操作小结
4. PV/PVC/SC概念介绍
4.1 简介
- Persistentvolume:简称pV,持久化存储,是kδs为云原生应用提供一种拥有独立生命周期的、用户可
管理的存储的抽象设计。 - PersistentVolumeclaim:简称pw,持久化存储声明,是k8s为解耦云原生应用和数据存储而设计的,
通过pv可以让资源管控更细更灵活、应用模板更通用。 - StorageClass:简称sc,存储类,是k8s平台为存储提供商提供存储接入的_种声明。通过sc和相应的
存储插件(csi)为容器应用提供持久存储卷的能力。
4.2 PVC样例模板详解
Pvc中定义应用所需的规格等配置
1.accessmodes
- ReadWriteOnce:允许以读写能力挂载到一个host上,如:云盘
- ReadOnlyMany:允许以只读能力挂到多个host上,如:文件存储
- ReadWrite Many:允许以读写能力挂载到多个host上,如:文件存储
2. volumeMode
- Filesystem:将云盘挂载为文件系统
- Block:将云盘挂载为块设备
3. Resource
- Requests:最小容量
- Limites:最大容量
4.storageClassName
- sc名字
5.mountOptions:
- mount指令中的 options
4.3 SC样例模板详解
Sc中定义存储类型和驱动等配置
- Parameters:插件驱动定义的参数
- Provisioner:指定存储卷的供应者
- reclaim Policy:
- Retain:保留
- Delete:删除
- volume Binding Mode
- Immediate:立即绑定
- Wait ForFirstConsumer:延迟绑定
- allow Volume Expansion
- True:允许扩容
- False:不允许扩容
4.4 PV样例模板详解
PV中定义应用所需的规格等配置
1.accessModes
- ReadWriteOnce:允许以读写能力挂载到-个host上,如:云盘
- ReadOnly Many:允许以只读能力挂到多个host上,如:文件存储
- ReadWrite Many:允许以读写能力挂载到多个host上,如:文件存储
2.capacity
- storage:容量大小
3.csi:out-tree驱动类型
- Driver:驱动名字
- fstType:磁盘文件类型
- olumeAttributes:存储驱动定义的参数
- volumeHandle:存储 volume的唯-|D
4. persistentVolume ReclaimPolicy
- Retain:保留
- Delete:删除
5.storageClassName
- sc名字
6.volume Mod
- Filesystem:将云盘挂载为文件系统
- Block:将云盘挂载为块设备
4.5 有状态应用&持久化存储的最佳实验
用户只需要定义好模板columeClaimTemplates,剩下都交给k8s自动化平台自己完成。
4.6 常用操作小结
PV/PVC/SC常用命令如下:
5.华为云CCE存储管理功能使用介绍
5.1 静态卷
1.CCE提供多种存储
- 云硬盘存储卷
- 文件存储卷
- 极速文件系统存储卷
- 对象存储卷
2.CCE提供两种静态卷的创建方式
- 通过购买新的存储创建PvC
- 通过导入已有的存储创建PvC
5.2 动态卷
集成在创建过程中。不同的存储卷对用户的展示也不同。下面以云盘为例,展示如何使用动态卷。
6.实验:程序天气预报
6.1 实验简介
共有5个服务模块:
- frontend:前台服务,展示整个应用的页面,使用 React. js开发而成;
- advertisement:广告服务,返回静态的广告图片,使用 Galang开发而成
- forecast:天气预报服务,返回相应城市的天气数据,使用 Node. js开发而成
- recommendation:推荐服务,根据天气情况冋用户推荐穿衣和运动等信息,使用Java
开发而成。 - DB:广告服务的后端,用于给advertisement返回广告图片的index,采用mysql数据库。
6.2 实验步骤
1.创建文件负载
2.创建容器
3.配置
4.完成
6.3 部署web系统的mysq数据库具体步骤
- 进入“云容器引擎>配置中心>秘钥 Secret”,点击“添加秘钥ˆ
- 填写秘钥名称: mysql- secret,选择集群和命名空间,秘钥类型
为 Opaque,秘钥数据键为 MYSQL ROOT PASSWORD,值为
YWRtaW4XMjM=,点击创建 - 进入“云容器引擎>工作负载>有状态负载”,点击“创建有状态
工作负载 - 填写工作负载的名称 mysql-adv及实例数1,点击“下一步容器设
置 - 选择"添加容器”>“开源镜像中心,搜索 mysql,点击确定
- 选择mysq5.6版本,环境变量选择秘钥导入mysqμ- secret,数据
存储选择添加云存储->云硬盘,挂载路径为∧ar/ib/mysq,点击
确定并下一步; - 填写端口名称和容器端口306,点击添加服务,选择集群內访问,
service的名称为“ mysql-adv",容器端口和访问端口均为3306 - 保持“高级设置”>提交创建。
本文整理自华为云社区【内容共创】活动第12期。
查看活动详情:https://bbs.huaweicloud.cn/blogs/325315
相关任务详情:任务34.华为云云原生黄金课程06:Kubernetes持久化数据卷管理
- 点赞
- 收藏
- 关注作者
评论(0)