阿里云容器存储解决方案

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 阿里云容器存储解决方案

阿里云容器存储解决方案



1     介绍

容器技术是这两年热门的话题,因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。而如今最热门的开源容器工具就是docker和Kubernets。

1.1   Docker

DockerPaaS提供商dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

1.2   Kubernetes

Kubernetes是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。它支持自动化部署、大规模可伸缩、应用容器化管理。

在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。我们可以使用kubernets创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

2     容器存储的需求

Docker里的数据不做持久化的话数据是不保留的。所有的数据都是临时的,关了或者重启都会让数据丢失。如何持久化保存容器的数据,这是自Docker诞生之日起就一直存在的问题。在Docker的初始设计中,数据与容器共生共灭,人们很难把容器从一台机器迁移到另一台机器。时至今日,存储的发展和变革给了容器持久化存储以多种多样的解决之道。

2.1   容器存储类型

容器架构使用到三种类型的存储:

      第一类是镜像存储数据。这可以利用现有的共享存储进行交付,要求类似于服务器虚拟化环境中虚拟机镜像分发保护的平台架构。容器镜像的一项好处在于其存储容量相较于完整的虚拟机镜像小了许多,因为它们不会复制操作系统代码。此外,容器镜像的运行在设计之初便是固定的,因此可以更高效地存储、共享。但也因此,容器镜像无法存储动态应用程序的数据。

 

      第二类是容器的管理配置数据。不论使用Docker、Kubernetes、Swarm、Mesos还是其它类型的容器管理工具,都需要存储配置数据、日志记录等管理数据。这类数据容量不大,ETCD集群等分布式系统存储,没有共享需求,可以直接使用节点的本地硬盘。

 

      第三类是容器应用的存储,相比虚拟机,容器的设计寿命更短,一旦容器销毁,所有的临时存储都会随之消散。因此,应用真正需要保存的数据,可以写入持久化的Volume数据卷。由于以微服务架构为主的容器应用多为分布式系统,容器可能在多个节点中动态地启动、停止、伸缩或迁移,因此,当容器应用具有持久化的数据时,必须确保数据能被不同的节点所访问。另一方面,容器是面向应用的运行环境,数据通常要保存到文件系统中,即存储接口以文件形式更适合应用访问。

2.2   容器存储管理

Kubernetes是开源的容器集群管理平台,可以自动化部署、扩展和运维容器应用。Kubernetes的调度单位称作Pod,每个Pod包含一个或多个容器。Pod可部署在集群的任意节点中,存储设备可以通过数据卷(Volume)提供给Pod的容器使用。为了不绑定特定的容器技术,Kubernetes没有使用Docker的Volume机制,而是制定了自己的通用数据卷插件规范,以配合不同的容器运行时来使用(如Docker和rkt)。数据卷分为共享和非共享两种类型,其中非共享型只能被某个节点挂载使用,共享型则可以让不同节点上的多个Pod同时使用。对有状态的应用来说,共享型的卷存储能够很方便地支持容器在集群各节点之间的迁移。

为了给容器提供更细粒度的卷管理,Kubernetes增加了持久化卷PV(Persistent Volume)的功能,把外置存储作为资源池,由平台管理并提供给整个集群使用。Kubernetes的卷管理架构使得存储可用标准的接入方式,并且通过接口暴露存储设备所支持的能力,从而在容器任务调度等方面实现了自动化管理。

2.3   阿里云容器存储管理架构

容器存储控制平面(Container Storage Control Plane),控制平面通常由软件实现,主要是接收北向API收到的存储请求,如创建、删除、加载、卸载和迁移数据卷(volume)等,并传递给底层数据平面去完成实际的存储操作。控制平面一般需要满足调用层规范的API,既可以是Docker容器引擎卷插件(Volume Plugin) 的API,也可以是Kubernetes等编排调度平台的Volume API。

存储数据平面(Storage Data Plane)提供数据实际的持久化能力,不仅需要实现容器数据卷的读写、快照、数据保护和复制等存储操作,而且通常还需具备多节点共享数据的能力。数据平面可以基于文件NAS实现,也可以基于云盘来实现数据存储功能。从部署架构上看,文件存储从易用性,扩展性和共享上更优于云盘。

 

37b02172e6fdfbcb37aff68195a10479aca8e818

NAS文件存储挂载流程:

1)      API接口调用Kubelet准备启动POD,并挂载NAS。

2)      Kubelet读取配置文件发现需要挂载的NAS,并通知Volume组件挂载。

3)      FlexVolume调用挂载命令挂载NAS。

4)      NAS挂载到ECS主机的/var/lib/kubernet/pods/**/volumes/alicloud-nas/pv-nas目录下。

5)      Kubelet创建POD,并将挂载了NAS的/var/lib/kubernet/pods/**/volumes/alicloud-nas/pv-nas目录映射到POD的/data目录。

3     阿里云NAS文件存储

阿里云文件存储NAS是一个弹性扩展,高可靠,高可用,高性能的分布式文件系统。它基于 POXIS 文件接口,天然适配原生操作系统,共享访问,同时保证一致性和锁互斥,并且性能随容量线性扩展。

阿里云文件存储NAS架构:

101b4bcedae21e6676d018ae804bbf96aadb5399

第一层是计算层,使用标准文件协议NFS/SMB或兼容posix的定制化客户端来访问文件存储。第二层是阿里云网络负载均衡ALB,把客户端请求轮转发送到前端机。第三层是负责协议处理的前端机,协议尽量做到无状态,涉及状态部分下沉到元数据管理层。第四层是元数据管理,把目录树结构转变成key-value对,通过基于log structure merge tree的分布式key-value来实现。第五层是元数据和数据持久化在盘古,使用盘古的分布式存储量提供高达10PB,和99.999999999%的数据可靠性,容量可弹性扩展,按需使用。

 

元数据和数据分离,NAS Protocol前端机IO直连盘古,把数据位置信息和元数据一起更新,前端机通过元数据更新盘古文件的信息。盘古文件是会散在整个集群的,所以前端机读写可充分利用整个集群的IO能力,最高可提供50K的IOPS和20GB/s的带宽吞吐量。

 

安全隔离,基于VPC安全组提供网络隔离和ACL访问控制,保证海量容器使用共享存储时的数据安全隔离。同时提供容器到文件存储的传输加密,保障数据传输过程在不被窃取和篡改。

 

数据备份,阿里云文件存储提供文件系统级的数据备份功能,可以基于灵活的备份策略提供多副本的数据保护,在发生数据误删除,错误修改的情景时,可以使用历史副本恢复容器数据。

4     阿里云容器服务解决方案

4.1   解决方案架构

94007f79d73b52a67e35b51695d5d6d858bef927

4.2   阿里云容器解决方案设计关注点

易用性:

  • 一键创建容器集群。
  • 基于容器的一站式应用生命周期管理。
  • 整合阿里云NAS文件存储,容量按需弹性扩展
  • 支持图形化界面和 OpenAPI。

安全可控:

  • 在阿里云容器服务中,容器运行在用户自己的 ECS 节点上,不会和其他用户共享,容器之间安全隔离。
  • 网络上,用户可以通过安全组定义容器集群内 ECS 节点和容器的访问策略,允许或者拒绝某些来源的地址访问容器。
  • 容器集群的管理 API 使用双向证书校验,避免接口被非法用户访问。
  • 专门的容器安全解决方案,如 neuvector,可以很方便地集成到阿里云容器服务上,提供更高层次的安全防护。

 

高效可靠,高性能:

  • 支持海量容器秒级启动。
  • 共享文件存储,支持容器的异常恢复和自动伸缩,数据不丢失。
  • 支持跨可用区的容器调度。

5     阿里云容器和存储业务部署配置

5.1   Kubernets集群部署

1.创建Kubernets集群

0365364a46680cadb1c3abcfcccddb6a194352e7

2.确认集群配置

713f868230851599cbb509533c929c9b0c2abdc4

3.集群开始自动创建部署

f24433d5d5473547974b5dfe7e218c9b384b45d7

4.集群创建成功

5e21c2fc299f34b17ff8d51201cf9b9f9deb84fb

5.2   阿里云NAS文件存储部署

1.创建NAS文件系统

93ef5c096afd48496f5434192e8c87c6fc841516

2. 添加挂载点

d91698c1c1cd8e5a3160eb6085899d2594214f08

3.成功添加挂载点,挂载地址用于后续对接容器使用

afffd795f1d62a016076cfac9d849d5cb2577ab7


5.3   Kubernets集群对接NAS存储

1.为集群创建存储卷

09c521786830b3c7a991965deec58f0695725be0


2. 成功创建NAS存储卷

96ecf56ed574c7b3b9afe8f124a02c3dcdca0a41


5.4   发布一个Nginx容器应用

1.创建应用容器

d76c2f50740c5d3889faf070c6eb0bb0dd14eebf

 

2.配置容器镜像、存储和网络

镜像选择:

456e352318dfa2eee2be7ff94d26880bfedbf5ab

存储配置,选择NAS文件存储作为数据存储:

5a7f487626074a0eb553657b2c6516dca8caaf0f


集群网络服务配置:

663f272d8a314bd72ef22afd5690c697593398f5

集群网络路由配置:

0921670b51f097df99299254b0217e060b36b845


3.Nginx容器应用部署成功:

4d8e6c44ae6c9c0d3a833ed62259a7a54aded95c

 

4.在主机测试Nginx,打开浏览器输出www.test.com域名,服务正常:

5b97d2c951d0f3c1f7aab979e5b13a65454d5733

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
18天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
14天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
阿里云ACK容器服务生产级可观测体系建设实践
|
18天前
|
运维 Kubernetes Java
阿里云容器计算服务ACS ,更普惠易用、更柔性、更弹性的容器算力
ACS(阿里云容器计算服务)推出Serverless容器算力,提供更普惠、柔性、弹性的算力资源,适用于多种业务场景,如复合应用、ACK集成、EMR大数据处理等,帮助企业降低成本、提升效率。
|
17天前
|
人工智能 Cloud Native 调度
阿里云容器服务在AI智算场景的创新与实践
2024年云栖大会,我们总结过往支持AI智算基础底座的实践经验、发现与思考,给出《容器服务在AI智算场景的创新与实践》的演讲。不仅希望将所做所想与客户和社区分享,也期待引出更多云原生AI领域的交流和共建。
|
17天前
|
人工智能 运维 Kubernetes
拥抱智算时代:阿里云容器服务智能、托管、弹性新体验
在2024云栖大会容器计算专场,给大家分享容器服务的新产品体验,本次分享,我们聚焦容器服务是如何通过智能、托管、弹性的产品新体验,来助力客户拥抱智算时代的。
|
23天前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
206 69
|
2天前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
15 4
|
4天前
|
存储 监控 Shell
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
19 5
|
1天前
|
监控 Kubernetes 测试技术
掌握Docker网络模式:构建高效容器通信
【10月更文挑战第3天】本文深入探讨了Docker的网络模式,包括它们的工作原理、使用场景以及如何配置和优化容器间的通信。希望能够帮助开发者在项目中有效地应用Docker网络模式,构建高效的容器化应用。
|
11天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。