博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes存储原理
阅读量:5911 次
发布时间:2019-06-19

本文共 1601 字,大约阅读时间需要 5 分钟。

导语:

Docker容器的设计原理是当容器消融时,容器内的存储也随之消失,但是实际情况中有很多是需要进行持久化的存储的,所以也很有必要进行Kubernetes持久化存储的概念说明。

Kubernetes存储组成

1.本地化的存储
2.网络化的存储
3.其他特殊存储

本地化的存储

①EmptyDir,EmptyDir是一个空目录,其的生命周期和所属的Pod是完全一致的。EmptyDir的用处是可以在同一 Pod 内的不同容器之间共享工作过程中产生的文件。缺省情况下,EmptyDir 是使用主机磁盘进行存储的,也可以设置emptyDir.medium 字段的值为Memory,来提高运行速度,但是这种设置,对该卷的占用会消耗容器的内存份额。
②HostPath,HostPath存储会把宿主机上的指定卷加载到容器之中,如果Pod发生跨主机的重建,其内容就难保证了。一般是用于本地化的日志存储。

网络化的存储

Kubernetes网络存储是学习的重点,Kubernetes支持为数众多的云提供商和网络存储方案。各种支持的方式不尽相同,例如 GlusterFS 需要创建 Endpoint,Ceph/NFS 之流就没这么麻烦了。各种配置需参考不同供应商的文档,本文就以NFS网络存储作为模型。
①静态PV,静态PV和使用它的Pod之间是一种静态绑定关系,在定义Pod的文件里,同时定义了它使用的Volume。Volume 是Pod的附属品,无法单独创建一个Volume,因为它不是一个独立的K8S资源对象。
②动态PV,动态PV是一个Kubernetes资源对象,所以可以单独创建一个PV。它不和Pod直接发生关系,而是通过Persistent Volume Claim,简称PVC来实现动态绑定,然后PVC会根据Pod的要求去自动绑定合适的PV给Pod使用。

PV的使用过程

一个PV创建完后状态会变成Available,等待被PVC绑定。一旦被PVC邦定,PV的状态会变成Bound,就可以被定义了相应PVC的Pod使用。Pod使用完后会释放PV,PV的状态变成Released。变成Released的PV会根据定义的回收策略做相应的回收工作。最后还有一种特殊的情况,Failed 自动回收失败。在实际使用场景里,PV的创建和使用通常不是同一个人。这里有一个典型的应用场景:管理员创建一个PV池,开发人员创建Pod和PVC,PVC里定义了Pod所需存储的大小和访问模式,然后PVC会到PV池里自动匹配最合适的PV给Pod使用。

PV的回收机制

Retain,允许人工处理保留的数据。
Delete ,将删除PV和外部关联的存储资源。
Recycle,将执行清除操作,之后可以被新的PVC使用。

PV的访问模式

ReadWriteOnce,是最基本的方式,可读可写,但只支持被单个Pod挂载。
ReadOnlyMany,可以以只读的方式被多个Pod挂载。
ReadWriteMany,这种存储可以以读写的方式被多个Pod共享。
不是每一种存储都支持这三种方式,像共享方式,目前支持的还比较少,比较常用的是NFS。在PVC绑定PV时通常根据两个条件来绑定,一个是存储的大小,另一个就是访问模式。

1d170291cc513de7a91564f05626fd6cc5c90c6e

官方实例

PVC

cce7c36c6d4872c30b1657af38024fee1d94b7b0

容器实例

bdfaf437428a9df85d633f5d85fb79e3df435a0a

PV

5f4ca340f78eed2f5832de6d619116b1db6f25bb

其他特殊存储

在完善的应用开发中,都会涉及到配置文件的变更,一个正常应用程序从写第一行代码开始,要经历开发环境、测试环境、预发布环境只到最终的线上环境。而每一个环境都要定义其独立的各种配置。如果我们不能很好的管理这些配置文件,运维工作将顿时变的无比的繁琐。为此业内的一些大公司专门开发了自己的一套配置管理中心,如百度的disconf等。Kubernetes也提供了自己的一套方案,即ConfigMap。Kubernetes通过ConfigMap来实现对容器中应用的配置管理。

 

转载地址:http://jhmpx.baihongyu.com/

你可能感兴趣的文章
Project Euler Problem 92 Square digit chains
查看>>
数组、指针
查看>>
VMware Vsphere 虚拟化
查看>>
*_zh_CN.properties 国际化资源文件 struts 防乱码等
查看>>
关于同时Python3和Python2引起的问题,Fabric-samples的balance-transfer不能运行
查看>>
2、Python语法基础
查看>>
保留两位小数
查看>>
SQL 存储过程返回值
查看>>
卷积核与特征提取
查看>>
共轭分布
查看>>
使用burp进行brute force破解
查看>>
SoapUI Pro Project Solution Collection-DataSource(jdbc,excel)
查看>>
maven及阿里云镜像
查看>>
ssh项目将搜索条件进行联动
查看>>
[CF494C]Helping People
查看>>
POJ 2594 Treasure Exploration(最小可相交路径覆盖)题解
查看>>
使用Promise链式调用解决多个异步回调的问题
查看>>
Windows2008 R2服务器配置TLS1.2方法
查看>>
制作mac U盘启动
查看>>
JS基础学习
查看>>