【云驻共创】华为云云原生黄金课程06:Kubernetes持久化数据卷管理

网友投稿 778 2022-05-28

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)样例模板详解

【云驻共创】华为云云原生黄金课程06:Kubernetes持久化数据卷管理

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.com/blogs/325315

相关任务详情:任务34.华为云云原生黄金课程06:Kubernetes持久化数据卷管理

Kubernetes 云原生

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL的redo log重做日志都懂了吗?
下一篇:Linux 内存映射 mmap 原理分析
相关文章