Docker云集群服务即将关闭,迁移容器的6大解决方案!

Posted 云智时代

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker云集群服务即将关闭,迁移容器的6大解决方案!相关的知识,希望对你有一定的参考价值。

前不久Docker宣布将在5月21日停止对其Docker Cloud产品中的集群管理支持。意味着基于Docker云的节点,Swarm集群和应用都将不可用。


Docker Cloud是第一个使用Docker Swarm作为其底层容器编排机制的突破性SaaS的解决方案之一。而在关闭后,用户将不再能够管理集群,创建和部署堆栈或自动重新部署应用。不过不要担心。有多种解决方案能够解决你迁移的担忧。


在寻找替代Docker Cloud解决方案时,需要考虑容器业务流程中的问题。无疑,Kubernetes会成为首选。不管是AWS,还是Docker都支持K8s。使用Kubernetes将能够加速部署集群的过程。虽然它优势明显,但部署上是一个相当复杂的解决方案。虽然这种复杂性可能对更有经验的K8S用户有利,但对于初学者来说,这可能需要陡峭的学习曲线。所以,可能你会寻找更适合需要的选项。还有一些仍然使用Docker Swarm作为编排系统的解决方案。它,非常适合那些尚未准备好,或没有时间将其整个基础架构转移到Kubernetes的用户。所以我们将推荐以下可用的解决方案,并帮助解析他们的优点和缺点。


Google Kubernetes引擎(GKE)


谷歌的Kubernetes引擎是集群管理和编排平台,用于在Google云平台(GCP)服务上运行Docker容器。使用GKE,可以将容器安排到集群中,并根据配置文件中定义的要求自动管理它们。由于它基于开源Kubernetes,它是启动K8s集群的最简单方式。只需通过复杂的GCP控制台点击几下即可实现此目的。GCP将启动指定数量的Google Compute Engine实例并部署默认的Kubernetes服务。从Docker Cloud迁移到GKE最困难的部分,是将Docker Cloud配置文件转换为由其YAML文件格式复杂的Kubernetes清单。使用GKE,只需支付用于构建Dockerized应用的GCP资源。而且GCP云计算价格有大量折扣,所以相当具有竞争力。


优点:


  • 获得生产就绪的Kubernetes集群

  • Kubernetes社区可以帮助你进行示例和最佳实践

  • 集群配置依赖于GCP,因此你可以确保高可用性

  • Kubernetes管理抽象资源

  • 通过GCP控制台升级到Kubernetes集群

  • 在主机上使用容器优化的操作系统

  • 与其他GCP资源紧密集成


缺点:


  • Kubernetes的复杂性(将你的Docker Cloud配置文件转换为Kubernetes清单将非常耗时)

  • 基础设施完全依赖于GCP服务

  • 付费解决方案

  • 限制版本选择


Azure容器服务(ACS)/Azure Kubernetes服务(AKS)


测试中的ACS或AKS是微软为开源编排工具提供的托管解决方案的方式。ACS支持Kubernetes,Docker Swarm和Apache Mesos。你也可以使用ACS进行独立的Docker Engine安装。如果你选择Kubernetes业务流程,Azure会照顾Kubernetes控制器并公开标准Kubernetes API。应将ACS视为更多的部署模板集合,而不是真正的容器业务流程。特别是因为一旦部署完成后无法升级集群。要使用ACS升级群集,你需要创建一个新集群,将容器迁移到该群集,然后删除旧群集。Azure的一个特别好处是从你的基础架构中制作模板非常简单。在创建和配置服务之后,可以基本拍摄快照并再次部署。如果你熟悉亚马逊的CloudFormation模板,那么Azure的系统将易于使用。


优点:


  • 支持多种编排系统

  • 为集群管理提供全面的Web UI和CLI

  • 使用Azure资源提供基础架构


缺点:


  • 不支持Kubernetes升级(为此你需要重新部署集群)

  • 基础架构完全依赖Azure资源

  • 付费解决方案

  • 不像GKE那么平滑


AWS


AWS是目前最成熟的公有云,许多企业在这里建立了良好的业务。AWS建立了自己的专有容器编排系统:弹性容器服务ECS。ECS的核心是集群管理,它处理所有的容器协调和状态管理任务。但ECS可能不像AWS最初希望的那样受欢迎。AWS的AKS是GKE和Azure的AKS期待已久的竞争对手,但它仍处于预览模式,并且自2017年11月宣布以来一直存在。如果想迁移到AWS,使用Kubernetes Operations(KOPS)或Kubespray只是几个自动化工具的例子,可以帮助简化你的集群部署。


优点:


  • 由AWS构建

  • 完全访问本地AWS功能和服务

  • 全面的环境管理

  • 易于运行的资源分配和自动调节以满足流量需求

  • 完全控制手动构建


缺点:


  • 并不像Kubernetes那样容易部署

  • ECS笨重且难以管理

  • 付费解决方案:你支付运行应用所需的AWS资源


Rancher


Rancher是Rancher-Labs团队提供的开源容器管理平台。Rancher允许你使用不同的基础业务流程系统来管理集群。它支持Kubernetes,Apache Mesos和Docker Swarm开箱即用。Rancher的目标是围绕Docker创建便携式基础架构服务,包括弹性块存储,虚拟网络,故障转移负载平衡器,安全组,监控,数据库服务等等。可以同时使用任何一个云提供商的多个区域在你自己的服务器和不同的公有云之间传输所有这些功能。最重要的是,由于在基础架构级别上不存在依赖性,因此请选择基于可靠性,性能,价格和信任的云。目前,Rancher 2.0已经发布,强化对Kubernetes的支持,并未提及对Docker Swarm的标准模式支持。


优点:


  • Web GUI集群管理

  • 支持多环境集群系统(Swarm,Kubernetes和Mesos)

  • 提供额外的企业级功能(使用预先构建的仪表板进行自我监控,日志审计和基于角色的授权等)

  • 适用于任何云或基础架构平台


缺点:


  • 需要安装Rancher服务器


Portainer


Portainer是Docker容器操作和配置的强大解决方案。这是一个Web应用,允许你配置和操作容器。Portainer提供丰富的功能,使你可以执行高质量和全面的配置。Portainer可以在Swarm模式下管理独立的Docker引擎和Docker集群。可以将Portainer作为本地Docker容器安装在任何Docker引擎(Linux或Windows主机)上。


优点:


  • 使用简单,具有卓越的用户界面

  • 轻松设置并启动第一个Docker容器

  • 允许连接到远程节点并审核容器日志/统计信息


  • 缺点:


  • 基础设施应该在与Portainer一起推出第一个容器之前做好准备


Docker CE/EE Swarm


可以继续使用Docker官方支持Docker Community Edition(CE)和Docker Enterprise Edition(EE)解决方案的Kubernetes。


Docker CE是一套免费的Docker产品。在Mac,Windows 10,AWS,Azure,CentOS,Debian,Fedora,Ubuntu和Docker Store上启动它。Docker EE是一个订阅软件包,可在相同认证的操作系统和云提供商处获得。从Docker Cloud迁移的第一步是组织Docker Swarm集群,该群集将提供高水平的可用性和可靠性。在本地服务器和云中启动群集。另外,这种迁移方法将支持混合云。实际上,你的新Docker Swarm集群与你的初始Docker Cloud解决方案不会有太大的不同。需要对Docker Cloud配置文件进行额外的更改(以YAML格式描述)。你的docker-cloud配置文件需要转换为docker-stack.yml文件,该文件描述Docker CE/EE集群上的应用堆栈。


优点:


  • 几乎可以在任何地方运行(Linux,Windows,云,内部部署等)

  • 内置于官方Docker CLI中,并使用本机Docker API

  • 从Docker Cloud简单转换

  • 可以免费(如果你拥有自己的基础设施,则使用Docker CE)


缺点:


  • Swarm在功能(扩展性较低)和流行度方面正在输给Kubernetes(即使Docker现在也支持Kubernetes)

  • 需要使用免费或Docker EE插件安装Web UI

  • 仅限于Docker API功能

  • Swarm并不像Kubernetes那样稳定


以上是关于Docker云集群服务即将关闭,迁移容器的6大解决方案!的主要内容,如果未能解决你的问题,请参考以下文章

WSL2 子系统迁移(docker&ubuntu)

cloudstack4.5私有云集群规划与安装

跨云集群的就近本地访问

linux下docker容器存放磁盘空间迁移

云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题

软链接迁移 Docker 容器存储位置