继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【原理剖析】K8S存储原理剖析与实战

Java架构师讲师团
关注TA
已关注
手记 80
粉丝 4585
获赞 2541

大家好,我是张飞扬,慕课网《Java架构师成长直通车》课程架构师讲师团成员之一。

今天这篇文章我将为大家讲解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 | base64
YWRtaW4=
[root@training3 ~]# echo -n password | base64
cGFzc3dvcmQ=

配置secret.yaml文件

apiVersion: v1
kind: Secret
metadata:
  name: userpass
data:
  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架构师成长直通车》课程里,我们将带领大家进入Volume的实战环节,了解emptyDir、PV、PVC和Secret的实际操作的更多细节。

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP

热门评论

讲的很好非常清楚111

讲得很好

查看全部评论