Kubernetes 迁移战略与最佳实践

男子坐在电脑前

作者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Kubernetes 迁移战略与最佳实践

Kubernetes 迁移战略是一个将应用程序和工作负载迁移至容器化环境的逐步执行计划,其中包含确保成功结果的最佳实践。

随着企业进行应用程序现代化改造并采用微服务等云技术,它们需要容器编排平台来可靠、高效地管理混合云多云工作负载。

作为主流的编排平台,Kubernetes 能够支持企业推进其云迁移 进程,助力遗留应用向 云原生 环境过渡。

根据云原生计算基金会 (CNCF) 2024 年的一项研究,云原生技术采用率已达到 89%,其中 93% 的组织正在使用、试点或评估 Kubernetes。1

为执行顺畅的 Kubernetes 迁移,企业需要一个稳健的战略,该战略需包含精心设计的规划,以抓住业务和技术机遇,同时应对挑战。

辅以专家洞察分析的最新科技新闻

通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。每份时事通讯都包含取消订阅链接。您可以在此管理您的订阅或取消订阅。更多相关信息,请参阅我们的 IBM 隐私声明

Kubernetes 概述

Kubernetes 最初由谷歌开发,是一个开源容器编排平台,自 2015 年起由云原生计算基金会负责维护。该平台也常被称为 k8s 或 kube,它负责调度并自动执行容器化应用程序的部署、管理和扩展。

在 Kubernetes 出现之前,应用程序通常运行在专用服务器或虚拟机 (VM) 上,这使得扩展成本高昂且耗时。

在现代容器化环境中,运行时引擎(通常为 Docker)允许开发人员构建、部署、运行、更新和管理容器。而 Kubernetes 则提供了所需的编排层,以大规模管理成百上千的容器。如今,Docker 和 Kubernetes 已成为主流的容器化工具。

Kubernetes 部署通过由节点组成的集群实现——每个节点代表一台物理机或 VM。每个集群都有一个主节点,用于管理 控制平面(包括 API 服务器和 etcd 数据库)。Kubernetes 应用运行在 Pod 中,Pod 是最小的可部署单元。它们通常包含基于 Linux 的容器,这些容器共享存储和其他资源。

Kubernetes 的关键特性包括:用于管理应用程序生命周期和副本集的部署、用于服务交付的 DNS网络、以及用于资源隔离的命名空间。Kubernetes API 服务器(通过 kubectl 命令行工具访问)管理配置并协调各组件间的通信。持久卷用于处理存储需求。

Kubernetes 是开源的,这使组织能够避免供应商锁定。DevOps 及其他团队受益于为其贡献改进和安全补丁的全球社区。所有主流云服务提供商,包括 Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform 和 IBM Cloud,都提供托管的 Kubernetes 服务。

IBM Cloud

Red Hat OpenShift AI on IBM Cloud:部署 AI 工作负载

将 AI 功能与 Red Hat OpenShift on IBM Cloud 结合使用。本视频将深入探讨如何利用可扩展的机器学习运营平台,高效构建、部署和管理 AI 工作负载。

Kubernetes 迁移的优势

迁移至 Kubernetes 能带来技术和组织层面的双重优势,包括:

  • 更优的资源利用与成本效益
  • 更高的可靠性与高可用性
  • 部署速度更快
  • 提升团队生产力与自主性

更优的资源利用与成本效益

Kubernetes 根据需求自动扩展或收缩应用程序规模。例如,在流量高峰期(如电商网站闪购活动期间),它会启动更多 Pod 以处理负载均衡。当活动结束、需求下降时,Kubernetes 会相应缩减规模以节省资源。

更高的可靠性与高可用性

Kubernetes 通过跨集群分布应用以及自动从故障中恢复,帮助保持应用程序稳定和可用。从而支持高可用性

更快的部署速度

Kubernetes 支持大规模持续交付,有助于简化工作流程,并使团队能够在需要时随时进行变更。滚动更新会逐步部署新版本,并在完成全面部署前监控问题。如果出现问题,可以快速回滚。

增强的团队生产力与自主性

使用 Kubernetes,各团队可以独立拥有并管理特定服务。这包括按照独立的计划进行部署、选择适合其需求的技术并以合适的速度进行创新。 

平台团队则提供诸如监控、日志记录和服务网格等共享服务,供所有团队使用,从而在保持一致性的同时不限制创新。

规划 Kubernetes 迁移

成功的迁移始于周密的规划,主要包括以下步骤:

  1. 评估当前环境。
  2. 评估团队技能与培训需求。
  3. 选择迁移方法。
  4. 规划集群策略。

1. 评估当前环境

首先,对现有的应用程序、基础设施和依赖项进行全面梳理。确定哪些应用程序适合作为早期迁移的对象。通常,具有明确定义 API 的无状态应用是最佳起点,而有状态应用则需要更多规划。

详细记录应用程序之间的依赖关系,包括数据库消息队列以及在迁移过程中需要考虑的外部服务。

评估当前的基础设施,以确定对组织而言,采用云服务提供商的托管 Kubernetes 服务还是自托管解决方案更为合适。同时,需考虑内部专业知识、合规性要求和预算限制等因素。

2. 评估团队技能与培训需求

评估团队目前在容器、Kubernetes 和云原生实践方面的能力。

根据 IBM 商业价值研究院 2023 年报告,约 58% 的全球决策者表示,云技能仍是一个重大挑战。

应尽早识别技能差距,并制定包含实践经验的培训计划。

3. 选择迁移方法

根据应用程序特性和业务优先级,在不同的迁移策略之间做出决策。直接迁移方法将现有应用程序容器化,改动最小,可以实现快速迁移,但可能会错失优化机会。重构应用程序以使其云原生化虽耗时更长,却能带来更好的性能、可扩展性和成本效益。

许多组织采用分阶段实施的方法。这意味着从简单的应用程序开始以积累经验,然后随着团队专业知识的增长,再处理更复杂的工作负载。

4. 规划集群策略

确定在新环境中应使用单个集群还是多个集群。单个集群管理更简单,但可能无法满足隔离性、合规性或地理分布的要求。多个集群能提供更好的隔离性并提高可靠性,但需要更复杂的配置管理,通常需借助 Helm 图表或 Kustomize 等工具。

实施 Kubernetes 迁移战略与最佳实践

规划阶段结束后,即可在以下最佳实践的指导下开始 Kubernetes 迁移:

  1. 准备好适用于 Kubernetes 的应用程序。
  2. 构建用于自动化部署的 CI/CD 流水线。
  3. 有效实施监控与日志记录。
  4. 确保 Kubernetes 集群的安全。

1. 准备好适用于 Kubernetes 的应用程序

容器映像

首先通过多阶段构建来创建容器映像。该技术将构建依赖项与生产环境运行内容分离,从而缩小映像体积并减少安全漏洞。

以非 root 用户身份运行容器。这样,即使发生安全威胁,损害也能被控制在有限范围内。

使用一致的标签并清晰组织映像仓库,轻松跟踪版本。

运行状况检查

恰当的运行状况检查有助于 Kubernetes 有效管理您的应用程序。Kubernetes 通过存活状态监测判断 Pod 是否需要重启,并通过就绪状态监测确定 Pod 何时可接收流量。

应用程序应公开能通过检查数据库连接、外部依赖项或内部状态来验证应用运行状况的端点。

网络

通过使用 Kubernetes Service 来配置服务发现和负载均衡,使应用程序能够通过服务名称(而非硬编码的 IP 地址)查找依赖项。

对于外部流量,需实现带有适当控制器的 Ingress 资源,以处理 SSL 终止和路由。

配置

将所有配置从应用程序代码中外部化,使用 YAML 文件进行管理。对非敏感配置使用 ConfigMap,对数据库凭证和 API 密钥等敏感数据使用 Secret,这使得同一容器镜像能够通过不同配置在开发、预发布和生产环境中运行。

2. 构建用于自动化部署的 CI/CD 流水线

构建处理从代码提交到生产部署全流程的 CI/CD 流水线,并包含单元测试集成测试和部署验证在内的自动化测试。容器映像会自动构建并推送到映像仓库,同时进行适当的版本管理。

3.  有效实施监控与日志记录

部署全面的监控,涵盖资源使用情况(CPU、内存和存储)、应用性能和业务指标,并提供用于可视化的仪表板。集中式日志记录有助于跨多个 Pod 和服务进行问题调试。

4. 确保 Kubernetes 集群的安全

使用基于角色的访问控制 (RBAC) 来定义权限,利用网络策略控制 Pod 间的流量,并对静态和传输中的数据进行加密。定期扫描容器映像以发现漏洞,并保持基础映像为最新状态。

Kubernetes 迁移的挑战

即使是规划周密的 Kubernetes 迁移也会面临障碍。本地遗留应用程序通常并非为容器化环境设计,可能依赖过时的配置、特定的服务器设置或本地存储,这些在 Kubernetes 中无法正常工作。数据库和第三方服务等外部系统也增加了复杂性。在预发布环境中进行全面的测试与验证,有助于在生产环境前识别并解决兼容性问题。

保护数据至关重要。可临时并行运行旧系统与新系统,在环境之间同步数据,并在完全切换至 Kubernetes 前验证功能。这种并行运行有助于减少停机时间并降低数据丢失风险。

Kubernetes 迁移工具与服务

云提供商和其他技术公司提供一系列 Kubernetes 迁移工具与服务,包括以下内容。

迁移与部署服务

云服务提供商提供用于评估工作负载、容器化和自动化部署的托管服务。例如,Amazon EKS、Microsoft Azure AKS 和 IBM Cloud Kubernetes Service 均提供迁移服务。

此外,诸如 Terraform基础设施即代码 (IaC) 工具可帮助开发人员自动化集群配置、附加组件安装及配置管理。

监控与可观测性平台

这些工具提供监控、可观测性和故障排除能力,使团队能够深入了解其 Kubernetes 环境的行为、运行状况与性能。

咨询服务

技术与咨询公司提供 Kubernetes 专业知识,对迁移工具形成补充。此类服务可以指导从初始评估到迁移后优化的战略决策,帮助组织应对复杂的技术与组织挑战。

相关解决方案
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud 是一个完全托管的 OpenShift 容器平台 (OCP)。

探索 Red Hat OpenShift
容器解决方案

容器解决方案能够运行和扩展容器化工作负载,并实现安全性、开源创新和快速部署。

深入了解容器
云咨询服务

利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。

云服务
采取后续步骤

开始使用完全托管的 Red Hat OpenShift 平台或深入了解 IBM Cloud Kubernetes 生态系统的灵活性。借助根据您的需求定制的安全可扩展解决方案,加快您的开发与部署流程。

探索 Red Hat OpenShift 深入了解 Kubernetes