本文档可帮助您规划、设计和实施容器到 Google Cloud 的迁移。如果操作不当,将工作负载从一个环境迁移到另一个环境可能是一项具有挑战性的任务,因此请仔细规划和执行迁移 本文档是关于迁移到 Google Cloud 的多部分系列文档的一部分。如果您对该系列的概述感兴趣,请参阅迁移到 Google Cloud:选择您的迁移路径 本文档是讨论将容器迁移到 Google Cloud 的系列文档的一部分: - 将容器迁移到 Google Cloud:入门(本文档) - 将容器迁移到 Google Cloud:将 Kubernetes 迁移到 Google Kubernetes Engine (GKE) - 将容器迁移到谷歌云:迁移到新的 GKE 环境 - 将容器迁移到谷歌云:迁移到具有多集群服务发现和多集群入口的多集群 GKE 环境 - 将容器迁移到 Google Cloud:从 OpenShift 迁移到 Anthos 本文档适用于各种场景——无论您是从本地运行的容器、私有托管环境还是其他云提供商开始,也无论您是将您的整个工作负载迁移到 Google Cloud 或在本地或私有托管环境中维护您的部分工作负载 如果您正在评估迁移机会并想探索它可能是什么样子以及您有哪些选择,则本文档也很有用。容器可以在多种环境中运行 Google Cloud 上可用的工作负载。选择一个选项而不是其他选项取决于几个因素,没有任何选项天生就比其他选项更好。每个环境都有自己的优点和缺点。要选择环境,请执行以下操作: - 建立一套标准来评估容器环境以运行工作负载 - 根据评估标准评估每个环境 - 选择最适合您需求的环境 您不必为所有工作负载选择相同的环境。如果您有不同类型或类别的工作负载,则可以为每种类型或类别选择不同的环境 ## 设计向 Google Cloud 的迁移 要将容器从源环境迁移到 GCP,我们建议您遵循迁移到 GCP 系列中描述的框架 下图说明了您的迁移旅程的路径 上图中所示的框架有四个阶段: 评估。在此阶段,您将评估源环境,评估要迁移到 GCP 的工作负载,并评估哪个环境可以支持每个工作负载。计划。在此阶段,您将为工作负载创建基本基础架构,例如配置资源层次结构和设置网络访问。部署。在此阶段,您将容器从源环境迁移到 GCP。优化。在此阶段,您开始利用云技术和功能 ## 建立评估容器环境以运行工作负载的标准 要建立标准来评估容器环境运行工作负载的选项,您需要考虑这些环境中您需要的最重要的功能。要收集有关您最需要哪些功能的信息,您需要评估您的工作负载。有关评估工作负载的更多信息,请参阅迁移到 Google Cloud:评估和发现您的工作负载 这些评估标准及其列出的顺序就是一个例子。您应该评估您的工作负载,以编制一份对您和您的工作负载很重要的标准列表,并根据重要性对它们进行排序。例如,在评估您的工作负载后,您可以考虑以下评估标准,按重要性顺序列出: 表现。环境是否增加了可能会降低工作负载性能的开销?可扩展性。环境提供哪些可扩展性功能?它们在反应时间和可伸缩性逻辑方面是否足以满足您工作负载的可伸缩性要求?控制程度和灵活性。您希望对环境进行多少控制?您可以根据需要自定义环境吗?可靠性。环境提供哪些保证?它们是否足以满足您的工作负载?它是否足够可靠以实施有效的高可用性和灾难恢复策略?管理负担。您需要付出多少努力来管理环境?您是否需要培训您的团队以收集必要的技能,或者您能否使用他们现有的知识?使用服务的要求。您的工作负载是否必须遵守任何要求、技术合同或接口?您是否需要花费大量精力使您的工作负载与环境兼容?数据持久化。运行工作负载的容器环境是否支持数据持久化?这种持久性是否符合您的工作负载要求,包括性能、可靠性和法律法规?定价模型和成本。您能否以经济高效的方式利用环境?您是否能够通过切换到容器环境来运行工作负载而获得适当的投资回报?面向未来。该环境是否提供可用于改进工作负载的升级路径?与其他服务集成。该环境是否与其他 Google Cloud 服务以及其他云提供商的服务集成?锁定。环境是否将您锁定在特定的技术、范例或界面中?环境是否阻碍了您的工作负载的可移植性?安全。环境是否满足您的安全和隐私要求? ## 评估容器环境以运行工作负载 在 Google Cloud 上,您有不同的选项来运行容器。要为您的工作负载选择最佳选项,您首先要根据您之前建立的评估标准对其进行评估。对于每个环境,您可以根据任意有序的量表中的每个评估标准为其分配一个分数。例如,您可以根据每个评估标准为每个环境分配一个从 1 到 10 的分数 要在 Google Cloud 上运行容器,我们建议使用以下选项,这些选项按照您对底层基础设施的控制程度递增的顺序显示: - Cloud Run 和 Cloud Run for Anthos - 谷歌 Kubernetes 引擎 (GKE) 和 Anthos 集群 - 计算引擎 您可以通过阅读产品文档来根据某些标准分配分数。例如,您已经可以根据性能、可扩展性、控制程度和灵活性、与其他服务的集成来评估 Cloud Run。但是,要根据其他标准分配分数,您可能需要设计和执行更深入的基准测试和模拟。例如,您可能需要对不同容器运行时的性能进行基准测试,以评估它们是否会为您的工作负载增加大量开销 Cloud Run 和 Cloud Run for Anthos Cloud Run 是一个托管平台,用于运行基于 Knative 构建的容器化、无状态工作负载。由 Cloud Run 管理的容器化工作负载可以在以下设备上运行: - 如果您选择 Cloud Run,您的工作负载将在 Google 管理的基础架构上运行 - 如果您选择 Cloud Run for Anthos,您的工作负载将在 GKE 上运行,它可以在 Google Cloud、本地或其他云提供商上 使用以下列表根据您之前建立的标准评估 Cloud Run 和 Cloud Run for Anthos: 表现。Cloud Run 和 Cloud Run for Anthos 使用 Docker 容器,其性能与非容器化工作负载相似,因此容器不会增加任何可观的性能开销。可扩展性。Cloud Run 会自动扩展工作负载的实例,并让您将应用程序扩展到零个实例。如果您的工作负载不需要一直运行实例,则此功能很有用。为了最小化实例启动时间,优化您的工作负载初始化。控制度和灵活性。Cloud Run 和 Cloud Run for Anthos 适用于需要完全控制工作负载运行的容器化环境的工作负载,但您不需要自定义该环境。可靠性。Cloud Run 和 Cloud Run for Anthos 与 Cloud Monitoring、Cloud Logging、Cloud Audit Logs 和 Error Reporting 集成,因此您可以覆盖性能监控以及对容器、请求、错误和审计日志的访问。管理负担。Cloud Run 和 Cloud Run for Anthos 管理环境,以便您可以专注于您的工作负载,而不是花费精力来配置、配置和维护底层基础设施。使用该服务的要求。您的工作负载必须遵守容器运行时合同,因此,如果您不能花费额外的精力使它们与 Cloud Run 兼容,我们建议您选择其他选项之一。有关 Cloud Run 限制的更多信息,请参阅 Cloud Run 已知问题。数据持久化。Cloud Run 和 Cloud Run for Anthos 旨在运行无状态容器。如果您的工作负载有数据持久化需求,您必须提供和配置另一个数据持久化系统。如果您需要用于有状态工作负载的容器运行时环境,我们建议您选择不同的选项。定价模型和成本。Cloud Run 对您的工作负载使用的计算资源收费。Cloud Run for Anthos 包含在 Anthos 订阅中。面向未来。Cloud Run 让您可以进行回滚、逐步推出和流量迁移。您可以将这些功能用于部署管道。与其他服务的集成。Cloud Run 可以连接到虚拟私有云 (VPC) 网络,该网络允许访问 Compute Engine 虚拟机和任何其他具有内部 IP 地址的资源。锁定。Cloud Run 基于 Knative 构建。如果您努力使您的工作负载与 Knative 兼容,您可以在 Cloud Run、GKE、Anthos clusters on VMware 或任何其他兼容 Knative 的运行时环境中运行容器化工作负载,而无需任何进一步修改。安全。在 Cloud Run 上运行的工作负载使用 gVisor 进行沙盒处理。Cloud Run for Anthos 不使用任何容器沙箱,而是使用默认的 Kubernetes 容器隔离功能。您可以通过使用身份和访问管理 (IAM) 管理访问并配置服务身份来保护您的 Cloud Run 资源有关详细信息,请参阅选择 Cloud Run 平台GKE 和 Anthos 集群GKE 和 Anthos 集群是 Google 管理的服务,提供容器环境来运行工作负载。GKE 和 Anthos 集群都在 Kubernetes 集群中运行容器化工作负载。使用 GKE,集群在谷歌云上运行,使用 Anthos 集群,集群可以在谷歌云、本地或其他公共云环境中运行使用以下列表根据您之前建立的标准评估 GKE 和 Anthos 集群:性能。GKE 和 Anthos 集群使用 Docker 容器,它们具有与非容器化工作负载相似的性能,因此容器不会增加任何可观的性能开销。可扩展性。GKE 和 Anthos 集群包含经过微调的扩展逻辑,您可以根据自己的需要进行调整。您可以纵向和横向扩展工作负载以及 GKE 和 Anthos 集群。如果您不需要复杂的扩展逻辑,我们建议您选择不同的选项,否则您可能需要花费大量精力来配置有效的扩展机制。控制度和灵活性。您可以根据需要供应和配置GKE 和Anthos clusters 集群。您可以对集群节点的各个方面进行个性化设置,包括存储、网络和安全性。Google 为您管理控制平面,因此如果您需要自定义控制平面的配置,我们建议您选择不同的选项。可靠性。GKE 和 Anthos 集群与 Cloud Monitoring 和 Cloud Logging 集成,因此您可以全面覆盖性能监控以及对容器、请求、错误和审计日志的访问。您可以使用 GKE 区域集群和 Anthos 集群高可用性选项提高环境的可靠性。管理负担。使用 GKE,您不必管理集群的控制平面,而 Anthos 集群让您可以使用相同的工具链和进程管理所有 Kubernetes 集群。这个特性大大减少了你需要花费在管理环境上的工作量,但是你需要管理部分底层基础设施。比如使用GKE,可以管理集群节点。大多数管理操作都可以自动化,但在规划维护环境所需的工作时,您仍然必须考虑这一点。如果您需要一个完全托管的容器环境来运行工作负载,我们建议您选择不同的选项。使用该服务的要求。要在 GKE 或 Anthos 集群上部署您的工作负载,您必须将它们容器化。数据持久化。GKE 和 Anthos 可以运行有状态的应用程序和永久性磁盘存储。定价模型和成本。GKE 对集群节点使用的资源收取集群管理费。Anthos 集群包含在 Anthos 订阅中。面向未来。GKE 和 Anthos 集群都具有处理复杂部署过程的功能。与其他服务的集成。如果您设置了必要的连接、身份验证和授权系统,则可以授予部署在 GKE 和 Anthos 集群上的工作负载对其他 Google Cloud 服务的访问权限。锁定。将工作负载容器化以在 GKE 或 Anthos 集群上运行它们之后,您可以通过微小的调整将它们移植到其他环境。Kubernetes 是一个可移植平台,它不会将您锁定在供应商环境中。安全。GKE 提供了多种方法来保护您的节点、控制平面和工作负载:有关更多信息,请参阅 GKE 安全概述有关迁移到 GKE 的更多信息和 Anthos 集群,请参阅将容器迁移到 Google Cloud:将 Kubernetes 迁移到 GKE 和将容器迁移到 Google Cloud:从 OpenShift 迁移到 AnthosCompute EngineCompute Engine 允许您创建和在 Google 基础架构上运行 VM虽然可以在 Compute Engine VM 上运行容器,但我们建议您选择其他容器环境之一来运行本文档中描述的工作负载。操作在 Compute Engine 上运行的自我管理环境所需付出的努力大大超过了您可能获得的回报但是,如果您选择在 Compute Engine 上运行容器Compute Engine VM,使用以下列表根据您之前建立的标准评估 Compute Engine: 表现。 Compute Engine 虚拟机没有预装任何容器运行时,因此请选择最能满足您要求的一个。可扩展性。 Compute Engine 使用托管实例组来自动扩展 VM 实例。配置托管实例组的自动缩放机制时,您可以定义 Compute Engine 用于缩减托管实例组的自动缩放信号。控制程度和灵活性。只要遵守 Compute Engine 资源配额,您就可以自定义每个 Compute Engine VM 的供应和配置的各个方面。可靠性。您可以使用 Cloud Monitoring、Cloud Logging 和 Cloud Audit Logs 来监控 Compute Engine 虚拟机,从而全面覆盖性能监控和日志。 Compute Engine 还使用托管实例组、实例健康检查和自动修复。管理负担。计算 VM 是自我管理的,因此计划大量的操作工作以有效地管理环境。使用服务的要求。只要您的工作负载在受支持的操作系统之一上运行,您就可以在 Compute Engine 虚拟机上运行它们。有关 Compute Engine 限制的更多信息,请参阅 Compute Engine 已知问题。数据持久化。 Compute Engine 有不同的数据持久化选项,例如区域永久性磁盘、区域永久性磁盘和本地固态硬盘。定价模型和成本。 Compute Engine 对您的工作负载所需的资源收费。面向未来。您可以在 Compute Engine VM 上为部署过程安装任何集成、部署、配置或配置管理工具。与其他服务集成。如果您设置了必要的连接、身份验证和授权系统,则部署在 Compute Engine 上的工作负载可以被授予对其他 Google Cloud 服务的访问权限。锁定。通过使用 Compute Engine,您不会被任何专有产品或服务所束缚。您可以构建自己的操作系统映像,以便您的供应和配置过程自动化且可移植。安全。 Compute Engine 有助于增强环境的安全性: - 访问控制机制 - 屏蔽 VM 以验证您的 VM 的完整性 - 独占访问物理节点的单租户节点 有关详细信息,请参阅保护 Google Cloud ## 为您的目标环境选择正确的选项 在前面的部分中,您为每个产品的每个条件分配了一个值。要计算每个容器环境运行工作负载的总分,您可以根据条件添加该环境的所有评分。例如,如果一个环境的性能标准得分为 10,可扩展性标准得分为 6,则该环境的总得分为 16 您还可以根据每个标准为分数分配不同的权重,以便您可以表示每个标准对您的评估的重要性。例如,如果在您的评估中性能比可伸缩性更重要,您可以定义乘数来反映这一点:性能乘数为 1.0,可伸缩性乘数为 0.7。然后您使用这些乘数来计算选项的总分 在计算出您评估的每个环境的总分后,您可以按总分降序排列环境。然后,选择得分最高的选项作为您选择的环境 有多种方式来表示此数据——例如,您可以使用适合表示多变量数据的图表(例如雷达图)来可视化结果 ## 下一步是什么 - 迁移到谷歌云:入门 - 将容器迁移到谷歌云:将 Kubernetes 迁移到 GKE - 将容器迁移到 Google Cloud:从 OpenShift 迁移到 Anthos - 探索有关 Google Cloud 的参考架构、图表、教程和最佳实践。查看我们的云架构中心。