Kubernetes存储

Docker的设计实现中,容器中的数据是临时性的,当容器销毁或重新启动时存储在容器内部的数据将会全部丢失,但实际上很多容器化应用是需要持久化保存的数据,这就需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中以保证数据的持久化存储。在Kubernetes中Pod重建如同Docker销毁一样,数据就会丢失,Kubernetes也通过挂载数据卷方式为Pod数据提供持久化能力,这些数据卷以Pod为最小单位进行存储,通过共享存储或分布式存储在各个Pod之间实现共享。

存储使用场景

Kubernetes是由Master节点及Node节点组成的,在Master节点中通过etcd存储了Kubernetes集群的节点信息、Pod信息、容器信息、配置信息。Node节点主要对外提供容器服务,着重描述Node节点与存储相关的内容。

Kubernetes以Pod为单位对外提供容器服务,真正的服务是通过Service进行访问的。Kubernetes中的服务按类型分成三种:无状态服务(stateless)、普通有状态服务、有状态集群服务

无状态服务:不需要持久化存储的,即使Pod重建也不会受影响,只要确保服务的可靠性便可,Kubernetes通过ReplicationSet来保证某个服务的实例数量。

普通有状态服务:这类服务需要保留服务的状态,通常通过Kubernetes提供的Volume及Persistent Volume、Persistent Volume Claim来保存状态。

有状态的集群服务:这类服务除了保存服务状态的同时还需要提供集群管理的功能,集群管理过程中也涉及临时数据的保存、集群内数据共享等。

Kubernetes中涉及存储的主要使用场景

1) 容器集群相关配置信息及运行时信息保存,这类信息存储在etcd中。

2) 服务的基本配置文件及证书文件。

3) 服务的状态存储、数据存储信息。

4) 集群内不同服务交换共享的数据信息。

文件存储的几种形式

1) 临时文件形式:同一个Pod内不同容器间通过共享内存方式访问,会创建一个空目录,交换完信息后会删除这个空目录。

2) HostPath方式:同一个Node内不同的Pod间进行信息共享使用HostPath方式(比如时区timezone)。如果Pod配置了EmptyDir数据卷,则它在Pod的生命周期内都会存在。当Pod被分配到Node上的时候,会在Node上创建EmptyDir数据卷,并挂载到Pod的容器中。

3) PV及PVC:Kubernetes的持久化存储机制的核心是PV(Persistent Volume)、PVC (Persistent Volume Claim)。PV是Volume插件,关联到真正的后端存储系统,PVC是从PV中申请资源,而不需要关心存储的提供方。PVC和PV的关系就如同Pod和Node一样,Pod是消费Node提供的资源,PVC是消费PV提供的存储资源。PVC和PV通过匹配完成绑定关系,PVC可以被Pod里的容器挂载。

4) 网络方式:不同Node节点之间的数据共享通过网络方式使用,通常采用分布式存储方式。开源的分布式文件系统比较流行的选择有GlusterFS和Ceph,还有一些其他的分布式文件系统(NFS)选择。

5) 自定义插件方式:Kubernetes提供了丰富的Volume的插件来进行存储管理。如果存储管理接口不够用,用户可以通过CSI或Flex Volume进行扩展。

存储组件实现原理

存储管理组件(存储组件)主要是接收北向API收到的Rest请求,维护持久卷的生命周期管理。如创建、删除卷,存储组件负责与后端存储软件交互完成实际的创建、删除卷等操作;并负责调用Kubernetes原生接口创建对应的PVC和PV

存储后端系统提供数据文件的实际持久化能力,不仅需要实现数据文件的读写、副本复制等存储操作,通常还需具备多节点高可用的能力。

当需要为自己的微服务应用挂载持久卷时,只需要通过存储组件创建持久卷,存储组件会在Kubernetes业务集群创建PVC/PV,并到后端存储系统(如GlusterFS)上创建真正的物理Volume,同时维护好PVC/PV/Volume之间的一一映射对应关系。这样,用户部署容器时就可以选择挂载相应的持久卷,部署后相应的卷就可以挂载到对应的容器。应用挂载持久卷后,进行读写时就类似于本地目录的读写操作。

在Pod进行重建或者迁移到其他节点时,Pod可以自动挂回原来对应的持久卷,继续使用原先的数据。多个Pod可以共享一个持久卷,从而达到容器间文件共享的目的。


摘抄自陆平的《基于Kubernetes的容器云平台实战》一书的第11章Kubernetes存储

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352