阿里云容器存储解决方案

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 阿里云容器存储解决方案

阿里云容器存储解决方案



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

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
268 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
1月前
|
Linux 开发工具 C语言
Centos8下编译安装最新版ffmpeg解决方案(含Centos8换源阿里云)
Centos8下编译安装最新版ffmpeg解决方案(含Centos8换源阿里云)
151 3
|
1月前
|
存储 调度 块存储
阿里云连续两年斩获全球存储顶会FAST最佳论文
阿里云连续两年斩获全球存储顶会FAST最佳论文
316 0
|
2月前
|
Kubernetes 物联网 数据中心
大规模 IoT 边缘容器集群管理的几种架构 -2-HashiCorp 解决方案 Nomad
大规模 IoT 边缘容器集群管理的几种架构 -2-HashiCorp 解决方案 Nomad
|
3月前
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
540 2
|
1月前
|
弹性计算 运维 安全
2024年阿里云一键搭建部署幻兽帕鲁服务器解决方案
幻兽帕鲁火了,为了确保畅快体验游戏,构建高效、稳定的游戏服务器至关重要。幸运的是,阿里云为您提供了快速、简便的服务器搭建解决方案,即使您对技术知识了解有限,也能在短短一分钟内轻松完成《幻兽帕鲁》游戏的联机服务器搭建!
1453 4
|
3月前
|
Kubernetes 监控 调度
阿里云容器服务ACK
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)提供高性能、可伸缩的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理。在ACK中,利用cGPU(Containerized GPU)技术可以实现GPU资源的共享,提高GPU利用率,降低整体成本。
68 6
|
27天前
|
弹性计算 缓存 Kubernetes
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
弹性容器实例是阿里云的云服务器产品,使用弹性容器实例之后,用户无需管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,与阿里云容器服务无缝对接并仅为容器实际运行消耗的资源付费。本文介绍了阿里云弹性容器实例的、功能特性、产品优势及应用场景。
什么是阿里云弹性容器实例?弹性容器实例优势及应用场景介绍
|
1月前
|
存储 调度 块存储
十二年磨一剑:三代架构演进,打造高性能、低成本的块存储!
上周,全球计算机存储顶会USENIX FAST 2024 在美国加州圣克拉拉召开,继去年获得国内首个FAST最佳论文奖后,凭借在分布式块存储上的创新,阿里云新作再次斩获FAST大会最佳论文奖。这也是国内唯一一家连续两年获得FAST最佳论文奖的科技公司。
104609 104