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

举报
小鲍侃java 发表于 2022/01/24 11:37:04 2022/01/24
【摘要】 从上节课程中我们已经了解无状态应用了。 应用是为了某项特殊的任务而编写的程序。程序是由算法和数据组成的在生产环境中,除了一些无状态应用外,还有一部分应用需要将结果数据(也即:状态)缓存下来,并永久的记录在存储中,以供后续使用。 这类应用就是我们将要讨论的“有状态应用”,与“无状态应用”相比,我们期望“有状态应用”具有哪些能力呢?

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数据库具体步骤

  1. 进入“云容器引擎>配置中心>秘钥 Secret”,点击“添加秘钥ˆ
  2. 填写秘钥名称: mysql- secret,选择集群和命名空间,秘钥类型
    为 Opaque,秘钥数据键为 MYSQL ROOT PASSWORD,值为
    YWRtaW4XMjM=,点击创建
  3. 进入“云容器引擎>工作负载>有状态负载”,点击“创建有状态
    工作负载
  4. 填写工作负载的名称 mysql-adv及实例数1,点击“下一步容器设
  5. 选择"添加容器”>“开源镜像中心,搜索 mysql,点击确定
  6. 选择mysq5.6版本,环境变量选择秘钥导入mysqμ- secret,数据
    存储选择添加云存储->云硬盘,挂载路径为∧ar/ib/mysq,点击
    确定并下一步;
  7. 填写端口名称和容器端口306,点击添加服务,选择集群內访问,
    service的名称为“ mysql-adv",容器端口和访问端口均为3306
  8. 保持“高级设置”>提交创建。

本文整理自华为云社区【内容共创】活动第12期。
查看活动详情:https://bbs.huaweicloud.com/blogs/325315
相关任务详情:任务34.华为云云原生黄金课程06:Kubernetes持久化数据卷管理

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。