今天这篇文章我将为大家讲解K8S的存储原理。

基础相对薄弱的伙伴,有给大家整理视频学习教程,文末详细了解!

说到数据存储,大家首先想到的是什么?

  1. 系统日志?
  2. 应用软件?
  3. 大数据?
  4. 临时文件?
  5. 配置文件?
  6. 密码、密钥?
    不管你有什么需求,Kubernetes都能帮你搞定。 对于需求1-4,我们可以采用Volume的方式; 对于需求5,可以采用Configmap;对于需求6,则要采用Secret。下面我们就逐一介绍一下吧。

Volume

其实Volume和Docker的数据卷Data Volume的概念是一脉相承的。就是通过将系统的特定目录以Volume的形式mount到Kubernetes的POD中。其中又分成五种形式:

  1. emptyDir
  2. hostPath
  3. storage provider
  4. PersistentVolume -> PersistentVolumeClaim
  5. StorageClass -> PersistentVolumeClaim

晕不晕?大家不用着急,我们稍微解释一下就清楚了。emptyDir最形象的比喻,就是靶场射击模式的Docker Volumes,完全由系统管理分配资源,将一个系统目录以指定的读写形式mount到容器指定目录。数据将保留到POD消失为止。hostPath,那就类似狩猎模式的Docker Bind Mounts,将用户指定的主机系统目录mount到容器内。数据将始终在物理节点上保留。缺点是和节点的目录有紧耦合的限制,使用较少。stoarge provider是将公有云或分布式存储(Ceph等)上的物理卷映射给容器,具体的配置方式可以参见各云平台文档。因为是脱离于服务器的物理卷,所以数据不会因为POD和服务器节点的故障而销毁。后续的两种模式才是最常见的Kubernetes Volume管理模式。我们将在下一节带着大家一起来实战。

Secret

Secret就是Kubernetes容器内密码密钥等敏感信息的传递方式。Secret的创建和使用方式也有好几种。我们这里重点介绍最常见的一种使用方式的具体步骤:

  1. YAML方式创建Secret
    运行base64编码命令获得admin(测试用户名)和password(测试密码)的数值
[root@training3 ~]# echo -n admin | base64YWRtaW4=[root@training3 ~]# echo -n password | base64cGFzc3dvcmQ=

配置secret.yaml文件

apiVersion: v1kind: Secretmetadata:  name: userpassdata:  username: YWRtaW4=  password: cGFzc3dvcmQ=
  1. 生成Secret
    kubectl apply -f secret.yaml
  2. 采用类似Volume的方式将Secret读入容器内。这种数据传递方式的好处是当secret通过修改YAML文件,并运行kubectl apply -f secret.yaml更新后可以迅速被同步到容器内,从而直接修改容器的参数配置。

具体的完整配置过程将和emptyDir一起在下一节内演示。

Configmap

Configamp就是Kubernetes容器内应用配置文件的传递方式。Configmap的创建和使用方式也有好几种。而每一种都和Secret几乎一致。不同处是Configmap的YAML文件中的kind类型为Configmap,同时所有的数值都是明文输入,不需要base64b编码的。具体实战将作为作业在下一节的存储实战演示后,由大家去课后实践。

小结

大家进过本篇文章了解了Kubernets中存储的基本分类和区别。

更多的Java实战教程也会继续为大家更新!不清楚的地方,伙伴们可以留言。

基础相对薄弱些的伙伴,可以学学我整理的视频学习教程,留言回复:Java,即可领取全套Java视频学习教程!

ceph存储原理_Java实战教程:【原理剖析】K8S存储原理剖析与实战相关推荐

  1. 视频教程- 19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合-Java

    19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有nod ...

  2. 【k8s完整实战教程3】k8s集群部署kubesphere

    系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论. 读者寄语:再小的帆,也能远航! [k8s完整实战教程0]前言 [k8s完整实战教程1]源码管理-Coding [k8s完整实战教程2]腾讯云搭 ...

  3. K8S实战集训第二课 K8S 存储 之 Ceph 分布式存储系统

    文章目录 为什么要用Ceph Ceph架构介绍 Ceph核心概念 RADOS Librados Crush Pool PG Object Ceph核心组件 OSD Monitor MDS Mgr RG ...

  4. 框架实现修改功能的原理_JAVA集合框架的特点及实现原理简介

    1.集合框架总体架构 集合大致分为Set.List.Queue.Map四种体系,其中List,Set,Queue继承自Collection接口,Map为独立接口 Set的实现类有:HashSet,Li ...

  5. java线程池的工作原理_Java 线程池的介绍以及工作原理

    在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大 使用线程池的好处: 1. 降低资源消耗: 通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 2. 提高响应速度 ...

  6. java aqs实现原理_JAVA基础学习之-AQS的实现原理分析

    AbstractQueuedSynchronizer是JUC的核心框架,其设计非常精妙. 使用了 Java 的模板方法模式. 首先试图还原一下其使用场景: 对于排他锁,在同一时刻,N个线程只有1个线程 ...

  7. Java生成随机数原理_Java中随机数的产生方式与原理详解

    Java中随机数的产生方式与原理 查阅随机数相关资料,特做整理 首先说一下java中产生随机数的几种方式 在j2se中我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0- ...

  8. java nio channel原理_Java NIO 选择器(Selector)与通道(Channel) 原理 | 学步园

    NIO底层实现poll, epoll(jdk1.5update 9  和jdk1.6  仅限于 linux 2.6以上 ) Java NIO 选择器(Selector) 知识预备 (linux epo ...

  9. java运行原理_Java程序的加载与运行原理详解

    Java程序的运行包括两个非常重要的阶段: 一.编译阶段 第一步:程序员需要在计算机硬盘中任意位置创建一个.java扩展名的文件,该文件被称为 java源文件,源文件当中编写的是java源代码/源程序 ...

  10. java forname 原理_Java Class.forName()用法和newInstance()方法原理解析

    Class.forName()主要功能 Class.forName(xxx.xx.xx)返回的是一个类, Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说 ...

最新文章

  1. 【MySQL】Dockerfile书写简单示例
  2. statsmodels 笔记:VAR
  3. 深入探讨JS中的数组排序函数sort()和reverse()
  4. 华为Mate 50系列明年亮相:或首发高通骁龙898 4G芯片
  5. .NET的托管堆中是否可能出现内存泄漏现象
  6. 关于iframe跨域实践(转载)
  7. gradle 配置及设置本地仓库
  8. Windows出现“未连接到互联网代理服务器出现问题,或者地址有误。问题解决办法”
  9. JS图片显示与隐藏案例
  10. 分别输入5名同学的三门课程成绩,用函数实现每名学生的平均分。
  11. 企业微信小程序获取手机号?
  12. win7系统wifi没有网络连接到服务器,Win7无线Wifi无法连接怎么办?win7系统Wifi无法连接的三种故障原因及解决方法...
  13. 如何隐藏并禁止查看U盘
  14. 正则表达式总结(待续)
  15. 国外优秀的域名注册商介绍
  16. 一文搞懂晶振,晶振的作用和原理?
  17. MySQL入门系列:数据的插入、删除和更新
  18. dll修复工具哪个比较好?修复工具介绍
  19. 编程循迹小车传感器怎么定义_宝马DSC系统故障怎么办?如何解决?
  20. 【eclipse】eclipse插件开发(一)

热门文章

  1. supports-screens
  2. 成就富翁:赚钱八大定律!
  3. 手动配置S2SH三大框架报错(三)
  4. 用SecureCRSecurePortable查看动态日志
  5. 安卓android eclipse运行提示no compatible targets were found
  6. 用Hough投票做物体检测的3篇文献
  7. double几位小数_算法竞赛入门之每日一题:分数化化小数(decimal) C语言
  8. mysql提高运行效率_提升Mysql执行效率的SQL优化技巧汇总
  9. Multi-statement transaction required more than ‘max_binlog_cache_size‘ bytes of storage
  10. resent代码详解