解锁容器持久化存储,阿里云上的Kubernetes存储管理-阿里云开发者社区

开发者社区> 木环> 正文

解锁容器持久化存储,阿里云上的Kubernetes存储管理

简介: 最新动态:阿里云 Kubernetes FlexVolume 数据卷发布,支持云盘、NAS 和 OSS。现在起,可以通过阿里云提供的 FlexVolume 插件,实现Pod和阿里云存储服务的自动绑定和回收策略制定,包括云盘、NAS 和 OSS。
+关注继续查看

容器需要持久化存储

“ 根本不存在无状态化的架构
There is no such thing as a stateless architecture


– Jonas Boner
Lightbend创始人兼CTO ,Akka作者

应用程序需要数据, IT方案被创造出来是为了解决商业业务数据的问题。

容器问世之时,它最初的目的是应对无状态化服务。随着容器技术的成熟,越来越多的人希望容器化应用可以直接关联数据。不论是传统的还是新型应用,都需要存储,如文件、块、对象存储的形式,通过文档、关系型数据库或者流媒体等等。

虚拟化技术的 hypervisor 虚拟机器监视器在硬件模拟层上有很多要求,而比起虚拟化技术,容器将应用的可移植性大大提升。应用程序的可移植性,依赖于容器编排系统的互操作性。但是,需要看到的是即使是现代化的云原生应用,存储也是不可缺少的关键模块,因为有了持久化存储,应用程序就可以基于此开发出很多功能。

容器编排系统和运行时通过特定请求来接通存储服务,如 Creat / Remove, Inspect / List, Attach / Detach, Mount / Unmount等。目前看来,业界都是在通过容器编排系统解决存储问题,能否实现此点也成为了工业界的分水岭。

通过 API 方式链接外部存储服务有两种方式:第一种是 in-tree 驱动,由在容器编排系统内部的原生化代码实现;第二种 out-of-tree驱动,由插件实现。前者受制于容器编排系统的发布周期,而后者可能无法提供容器编排系统配套的加强功能。

image

Kubernetes的存储机制

Docker率先尝试通过 out-of-tree模式解决了如何与外部存储协同的问题,在 1.7 Experimental 版本中创建了Docker Volume Driver接口。

而 Kubernetes 则提供 in-tree 和 out-of-tree两种模式。

In-tree是 Kubernetes 标准版的一部分,已经写入 Kubernetes 代码中。通过基于 Kubernetes 内置 interface 的API命令如 Mount / Unmount, Creat / Delete等进行存储平台的操作。Kuberentes 会在
pod 创建时进行所有相关的必要操作,并且找到相关驱动执行特定 API 背后的所需动作。用户可以充分发挥 Kubernetes 中动态配置和存储类等新特性。唯一的缺点就是,如果存储平台需要 bug 修复或者功能添加的话,需要等待 Kubernetes 的发布周期。一般而言,Kubernetes 的发布周期在3-6个月,这意味着 bug 修复或者持续更新并不能随心所欲。

Out-of-tree 是通过 Flexvolume 接口实现的,Flexvolume 可以使得用户在 Kubernetes 内自己编写驱动或添加自有数据卷的支持。第三方驱动通过数据卷插件路径安装在每个 Kubelet 和 master 节点。这使得存储驱动可以与 Kubernetes 内核代码独立开来,bug 修复和功能更新都不需要等待 Kubernetes 的日程计划。Flexvolume 接口设定认为数据卷的创建和删除都是发生在其外部,因此只有 Attach / Detach 和 Mount / Unmount操作可行,并且也不是在数据卷的全部生命周期可行。

image

阿里云 Kubernetes 的存储支持

阿里云容器服务全球首批通过 Kubernetes 一致性认证,用户可以通过 in-tree 形式挂载存储。

而对于 out-of-tree,阿里云容器服务支持 Kubernetes Pod 自动绑定阿里云云盘、NAS、OSS存储服务。目前对于静态存储卷和动态存储卷的支持情况如下:

image

操作指南:

使用阿里云云盘

使用阿里云 NAS

使用阿里云 OSS

在使用容器过程中,你可能会在日志、数据备份、配置信息等场景中需要用到存储,不如按照上述办法尝试下吧? 对了,你也可以使用日志服务来应对日志的问题哦!

全面提升,阿里云 Docker / Kubernetes(K8S) 日志解决方案与选型对比

参考文章

Container Storage Architectures: How Does Kubernetes, Docker, and Mesos Compare?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用 Kustomize 帮你管理 kubernetes 应用(三):将 Kustomize 应用于 CI/CD
本篇为系列文章第三篇,使用 jenkins 发布一个简单的使用 flask 写的 web 项目,来演示在 CI/CD 流程中 Kustomize 的简单使用。
2102 0
企业搬站的关键:企业级存储如何助力核心业务系统上云?
2019阿里云峰会上海专场,阿里云高级产品专家彭亚雄带来题为企业搬站之旅,企业存储助力核心业务系统上云的分享。
3195 0
Kubernetes 1.4:一个DevOps工具管理所有的容器
本文讲的是Kubernetes 1.4:一个DevOps工具管理所有的容器【编者的话】有很多的DevOps工具管理容器,但Kubernetes迅速成为其中的佼佼者。
1605 0
如何使用Terraform管理容器服务Kubernetes集群之-标准版集群
#### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。
985 0
使用阿里云容器服务 ACK 和文件存储 NAS 构建现代化企业应用
大规模构建容器化应用程序需要高可靠、弹性、共享且支持高性能数据处理的数据存储解决方案。通过迁移到公共云,企业可以获得更高的生产效率和更低的成本。阿里云文件存储可以为现代化应用提供强健的数据稳定性,可靠性,高性能和在线扩展能力。
1321 0
使用阿里云文件存储实现容器持久化存储
阿里云文件存储实现容器持久化存储的架构、最佳实践、应用场景以及案例。
4060 0
借助阿里云ECS实现传统.NET应用容器化(上)
我们都知道.NET Core应用可以跑在Docker上,那.NET Framework 4.x应用呢?借助阿里云ECS主机(Windows Server 2019 with Container版本),一切变得So Easy!
304 0
《容器上云的攻与守》-云栖演讲实录
今天上午王坚博士讲了一句话我比较有感触,大家做系统的时候,一定要想下你的系统的数据是怎么流转,这些系统的数据是怎么形成闭环。我们在设计阿里云的K8S容器服务ACK的时候也是融入了这些思考。 首先是跟大家先看一下整个容器上云的解决方案。首先因为你已经做过容器,所以当你容器上云的时候,实际上这个事情是非常简单的,我们只需要提供的相应的工具,帮助大家把容器镜像迁入阿里云同时通过工具把K8S的配置迁到阿
872 0
+关注
木环
前程序媛,前IT媒体人;现运营打杂。
137
文章
0
问答
来源圈子
更多
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载