将容器迁移到 Google Cloud:使用入门

本文档可帮助您规划、设计和实现将容器迁移到 Google Cloud 的过程。如果操作不当,那么将工作负载从一个环境迁移到另一个环境可能会遭遇挑战,因此请谨慎规划和执行迁移。

本文档是关于迁移到 Google Cloud 的系列文章中的一篇。如果您想要了解该系列文章,请参阅迁移到 Google Cloud:选择迁移路径

本文档是一系列文章中的一篇,介绍了如何将容器迁移到 Google Cloud:

本文档适用于各种场景 - 无论您是从本地环境、私有托管环境还是从其他云提供商处运行的容器开始,以及无论是将整个工作负载迁移到 Google Cloud,还是在本地或私有托管环境中维护工作负载的一部分。

如果您要评估迁移机会并希望了解它可能是什么样子,以及有哪些选项,本文档也非常有用。Google Cloud 上有多种环境可以让容器运行工作负载。选择其中一个选项取决于多个因素,没有一个选项天生优于其他选项。每种环境各有利弊。如需选择环境,请执行以下操作:

  1. 制定一套评估要运行工作负载的容器环境的标准。
  2. 根据评估标准评估每种环境。
  3. 选择最能满足您的需求的环境。

您不必为所有工作负载选择相同的环境。如果您有不同类型或类别的工作负载,则可以为每种类型或类别选择不同的环境。

设计迁移到 Google Cloud 的过程

如需将容器从来源环境迁移到 Google Cloud,我们建议您遵循迁移到 Google Cloud 系列中介绍的框架。

下图说明了迁移过程的路径。

迁移路径包含四个阶段。

上图演示的框架有四个阶段:

  1. 评估。在此阶段,您将评估来源环境、评估要迁移到 Google Cloud 的工作负载,并评估哪种环境可以支持每个工作负载。
  2. 规划。在此阶段,您将为工作负载创建基本基础架构,例如预配资源层次结构和设置网络访问。
  3. 部署。在此阶段,您将容器从来源环境迁移到 Google Cloud。
  4. 优化。在此阶段,您将开始利用云技术和功能。

制定评估要运行工作负载的容器环境的标准

如需制定评估要运行工作负载的容器环境的选项,请考虑这些环境中所需的最重要的功能。要收集您最需要哪些功能的信息,您需要评估您的工作负载。如需详细了解如何评估工作负载,请参阅迁移到 Google Cloud:评估和发现您的工作负载

这些评估标准及其排列顺序的示例如下。您应评估工作负载,以编译对您和工作负载重要的标准列表,并按照重要性对这些标准进行排序。例如,在评估工作负载后,请考虑使用以下评估标准(按重要性列出):

  1. 性能。环境会增加开销,但可能会降低工作负载性能?
  2. 可伸缩性。该环境提供了哪些可扩缩功能? 在反应时间和可扩缩逻辑方面,它们是否足够满足工作负载的可扩缩要求?
  3. 控制力和灵活性。您希望环境控制力有多大?您能否根据需要自定义环境?
  4. 可靠性。该环境提供哪些保证?它们是否足够满足您的工作负载需求?是否足够可靠,能够实现有效的高可用性和灾难恢复策略?
  5. 管理负担。您需要投入多少精力来管理环境?您是需要训练您的团队来掌握必要的技能,还是可以使用他们现有的知识?
  6. 使用服务的要求。您的工作负载是否必须遵循任何要求、技术合同或接口? 您是否需要花费大量精力来使您的工作负载与环境兼容?
  7. 数据持久化。运行工作负载的容器环境是否支持数据持久化?此持续化是否兼容工作负载的要求,包括性能、可靠性和法律规定?
  8. 价格模式和费用。您能否以经济实惠的方式使用环境?通过切换到容器环境来运行工作负载,您可以获得适当的投资回报吗?
  9. 满足未来需求。该环境是否有可用于改进工作负载的升级路径?
  10. 与其他服务集成。该环境是否与其他 Google Cloud 服务以及其他云服务商的服务集成?
  11. 限定。环境是否将您限定在特定的技术、范例或接口?环境是否妨碍了工作负载的可移植性?
  12. 安全。环境是否符合您的安全和隐私权要求?

评估要运行工作负载的容器环境

在 Google Cloud 上,您可以选择运行容器的不同选项。要为工作负载选择最佳选项,您首先需要根据之前制定的评估标准对工作负载进行评估。对于每个环境,您需要按照任意顺序对每项评估标准评分。例如,您可以为每项评估标准分配一个分数,评分范围从 1 到 10。

要在 Google Cloud 上运行容器,我们建议您使用以下选项,这些选项的增多程度取决于您对底层基础架构的控制力度:

  1. Cloud RunCloud Run for Anthos
  2. Google Kubernetes Engine (GKE) Anthos 集群
  3. Compute Engine

通过阅读产品文档,您或许可以根据某些标准分配得分。例如,您已经可以根据性能、可扩缩性、控制力和灵活性与其他服务集成来评估 Cloud Run。但是,为了根据其他标准分配得分,您可能需要设计和执行更深入的基准测试和模拟。例如,您可能需要对不同容器运行时的性能进行基准测试,以评估它们是否会给您的工作负载增加相当大的开销。

Cloud Run 和 Cloud Run for Anthos

Cloud Run 是一个代管式平台,用于运行基于 Knative 构建的容器化、无状态工作负载。由 Cloud Run 代管的容器化工作负载可在以下环境中运行:

  • 如果选择 Cloud Run,您的工作负载将在 Google 代管的基础架构上运行。
  • 如果您选择 Cloud Run for Anthos,您的工作负载将在 GKE 上运行,而 GKE 可以在 Google Cloud、本地或其他云提供商处运行。

使用以下列表,根据您先前制定的标准评估 Cloud Run 和 Cloud Run for Anthos:

  1. 性能。Cloud Run 和 Cloud Run for Anthos 使用 Docker 容器,这些容器具有与非容器化工作负载相似的性能,因此容器不会增加任何显著的性能开销。
  2. 可伸缩性。Cloud Run 会自动扩缩工作负载的实例,并可让您将应用扩展到零个实例。如果您的工作负载不需要每次都运行实例,则此功能非常有用。要最大限度地缩短实例启动时间,请优化工作负载初始化
  3. 控制力和灵活性。Cloud Run 和 Cloud Run for Anthos 适用于需要完全控制运行您的工作负载所在的容器化环境的工作负载,但您无需自定义该环境。
  4. 可靠性。Cloud Run 和 Cloud Run for Anthos 集成了 Cloud MonitoringCloud LoggingCloud Audit LogsError Reporting,因而您可以了解性能监控并可对容器、请求、错误和审核日志具有访问权限。
  5. 管理负担。Cloud Run 和 Cloud Run for Anthos 会管理环境,因此您可以专注于工作负载,而不必花费精力预配、配置和维护底层基础架构。
  6. 使用服务的要求。您的工作负载必须遵循容器运行时合同,因此如果您无法花费更多精力来处理它们与 Cloud Run 的兼容,我们建议您选择其他选项。如需详细了解 Cloud Run 的限制,请参阅 Cloud Run 已知问题
  7. 数据持久化。Cloud Run 和 Cloud Run for Anthos 旨在运行无状态容器。如果您的工作负载具有数据持久化要求,则必须预配和配置其他数据持久化系统。如果您需要为有状态工作负载提供容器运行时环境,我们建议您选择其他选项。
  8. 价格模式和费用。Cloud Run 按工作负载使用的计算资源收费订阅 Anthos 后就可以使用 Cloud Run for Anthos。
  9. 满足未来需求。Cloud Run 让您可以执行回滚、逐步发布和流量迁移。 您可以在部署流水线中使用这些功能。
  10. 与其他服务集成。Cloud Run 可以连接到 Virtual Private Cloud (VPC) 网络,该网络允许访问 Compute Engine 虚拟机和具有内部 IP 地址的任何其他资源。
  11. 限定。Cloud Run 在 Knative 的基础上构建而成。如果您确实希望确保工作负载与 Knative 兼容,则可以在 Cloud Run、GKE、Anthos clusters on VMware 或任何其他与 Knative 兼容的运行时环境中运行容器化工作负载,而无需任何其他修改。
  12. 安全使用 gVisor 可沙盒化Cloud Run 上运行的工作负载。Cloud Run for Anthos 不使用任何容器沙盒,但使用默认的 Kubernetes 容器隔离功能。如需保护 Cloud Run 资源,您可以使用 Identity and Access Management (IAM) 管理访问权限,然后配置服务身份

如需了解详情,请参阅选择 Cloud Run 平台

GKE 和 Anthos 集群

GKE 和 Anthos 集群是 Google 代管的服务,提供用于运行工作负载的容器环境。GKE 和 Anthos 集群均在 Kubernetes 集群中运行您的容器化工作负载。对于 GKE,集群运行于 Google Cloud,而对于 Anthos 集群,集群可以运行于 Google Cloud、本地环境或其他公有云环境

使用以下列表,根据您先前制定的标准评估 GKE 和 Anthos 集群:

  1. 性能。GKE 和 Anthos 集群使用 Docker 容器,这些容器具有与非容器化工作负载相似的性能,因此容器不会增加任何显著的性能开销。
  2. 可伸缩性。GKE 和 Anthos 集群包含精确调整的缩放逻辑,您可以根据自己的需求进行调整。您可以纵向横向扩缩工作负载您的 GKE 和 Anthos 集群。如果您不需要复杂的扩缩逻辑,建议您选择其他选项,因为要不然您可能需要花费大量的精力来配置有效的可扩缩机制。
  3. 控制力和灵活性。您可以根据需要预配和配置 GKE 和 Anthos 集群。您可以个性化集群节点的各个方面,包括存储、网络和安全性。Google 为您管理控制层面,因此如需自定义控制层面的配置,我们建议您选择其他选项。
  4. 可靠性。GKE 和 Anthos 集群可与 Cloud Monitoring 和 Cloud Logging 集成,因此您可以全面了解性能监控并可对容器、请求、错误和审核日志具有访问权限。您可以使用 GKE 区域级集群Anthos 集群高可用性选项来提高环境的可靠性。
  5. 管理负担。借助 GKE,您无需管理集群的控制层面,Anthos 集群可让您使用相同的工具链和流程管理所有 Kubernetes 集群。此功能大大减少了管理环境所需的工作量,但您需要管理底层基础架构的一部分。例如,利用 GKE,您可以管理集群节点。大多数管理操作可以自动执行,但在您规划维护环境所需的工作量时,仍然有一些事项需要考虑。如果您需要全代管式容器环境来运行工作负载,我们建议您选择其他选项。
  6. 使用服务的要求。如需在 GKE 或 Anthos 集群上部署工作负载,您必须对其进行容器化。
  7. 数据持久化。GKE 和 Anthos 可以运行有状态应用永久性磁盘存储
  8. 价格模式和费用。GKE 收取集群管理费以及集群节点所用资源的费用订阅 Anthos 后就可以使用 Anthos 集群
  9. 满足未来需求。GKE 和 Anthos 集群都具有处理复杂部署流程的功能
  10. 与其他服务集成。如果您设置了必要的连接、身份验证和授权系统,则可以向 GKE 集群和 Anthos 集群上部署的工作负载授予对其他 Google Cloud 服务的访问权限。
  11. 限定。将工作负载容器化以在 GKE 或 Anthos 集群上运行它们后,您只需进行较小的调整即可将它们移植到其他环境。Kubernetes 是一个可移植的平台,它不会将您限定在供应商环境中。
  12. 安全。GKE 提供了多种保护节点、控制层面和工作负载的方法:

如需了解详情,请参阅 GKE 安全概览

如需详细了解如何迁移到 GKE 和 Anthos 集群,请参阅将容器迁移到 Google Cloud:将 Kubernetes 迁移到 GKE将容器迁移到 Google Cloud:从 OpenShift 迁移到 Anthos

Compute Engine

使用 Compute Engine,您可以在 Google 基础架构上创建并运行虚拟机。

尽管可以在 Compute Engine 虚拟机上运行容器,但是我们建议您选择其他容器环境之一来运行本文档中介绍的工作负载。在 Compute Engine 上运行自我管理环境所需要花费的精力大大超过了您可能获得的收益。

但是,如果选择在 Compute Engine 虚拟机上运行容器,请使用以下列表根据您先前制定的标准来评估 Compute Engine:

  1. 性能。Compute Engine 虚拟机未预安装任何容器运行时,因此请选择最能满足您要求的容器运行时。
  2. 可伸缩性。Compute Engine 使用代管式实例组自动扩缩虚拟机实例。在配置代管式实例组的自动扩缩机制时,您可以定义自动扩缩信号供 Compute Engine 用于横向扩缩代管式实例组。
  3. 控制力和灵活性。只要遵循 Compute Engine 资源配额,您就可以自定义每个 Compute Engine 虚拟机的预配和配置的各个方面。
  4. 可靠性。您可以使用 Cloud MonitoringCloud LoggingCloud Audit Logs 监控 Compute Engine 虚拟机,以全面了解性能监控和日志。Compute Engine 还使用代管式实例组实例运行状况检查和自动修复
  5. 管理负担。Compute Engine 虚拟机是自行管理的,因此为有效管理环境计划相当大的工作量。
  6. 使用服务的要求。只要您的工作负载在受支持的操作系统之一上运行,就可以在 Compute Engine 虚拟机上运行它们。如需详细了解 Compute Engine 的限制,请参阅 Compute Engine 已知问题
  7. 数据持久化。Compute Engine 具有不同的数据持久化选项,例如可用区永久性磁盘地区永久性磁盘本地固态硬盘
  8. 价格模式和费用。Compute Engine 根据工作负载所需的资源收费
  9. 满足未来需求。您可以在 Compute Engine 虚拟机上为您的部署流程安装任何集成、部署、预配或配置管理工具。
  10. 与其他服务集成。如果您设置了必要的连接、身份验证和授权系统,则可以授予在 Compute Engine上部署的工作负载访问其他 Google Cloud 服务的权限
  11. 限定。通过使用 Compute Engine,您不会受到任何专有产品或服务的限定。您可以构建自己的操作系统映像,因而您的预配和配置流程可实现自动化并且可以移植。
  12. 安全。Compute Engine 有助于增强环境的安全性:

如需了解详情,请参阅保护 Google Cloud

为目标环境选择正确的选项

在前面的部分中,您为每个产品的每项标准分配了一个值。要计算运行工作负载的每个容器环境的总得分,请根据相应标准为该环境添加所有评分。例如,如果一个环境的性能标准得分为 10,而可扩缩性标准得分为 6,则该环境的总得分为 16。

您还可以为每项标准的得分分配不同的权重,这样您便可表示每项标准对您的评估的重要性。例如,如果在您的评估中性能比可扩缩性更重要,那么您可以定义乘数来反映这一点:性能的乘数为 1.0,可扩缩性的乘数为 0.7。然后,您使用这些乘数来计算一个选项的总得分。

计算您评估的每个环境的总得分后,您可以根据其总得分按降序排列环境。然后,选择得分最高的选项作为您选择的环境。

您可以通过多种方式表示这些数据,例如,您可以使用适合表示多变量数据的图表(例如雷达图表)直观呈现结果。

后续步骤