Kubernetes 是全球最受欢迎的开源容器编排平台,被认为是云原生技术史上的一个重要里程碑。Kubernetes 由 Google 内部开发,并于 2014 年向公众发布,它使企业能够摆脱传统 IT 基础设施,而转向自动执行与容器化应用程序(或微服务)的部署、扩展和管理相关的运营任务。虽然 Kubernetes 已成为容器管理的事实标准,但许多公司还将该技术用于更广泛的用例。
容器是打包代码及其所有依赖项以在任何环境中运行的轻量级软件单元,它们构成了 Kubernetes 的基础,对于现代微服务、云原生软件和 DevOps 开发运维工作流程至关重要。
Docker 是第一个普及容器化应用程序的构建、部署和管理过程的开源软件工具。但是 Docker 缺乏自动化的“编排”工具,这使得数据科学团队扩展应用程序的过程变得既耗时又复杂。Kubernetes(也称为 K8s)是专门为通过自动管理容器化应用程序来应对这些挑战而创建的。
概括地说,Kubernetes 编排平台通过带有 pod 的容器以及节点来运行。一个 Pod 运行一个或多个 Linux 容器,并且可以在多个容器中运行,以实现扩展和抗故障能力。节点运行 Pod,通常分组在 Kubernetes 集群中,从而抽象出底层物理硬件资源。
Kubernetes 的声明式、API 驱动的基础设施已帮助 DevOps 开发运维和其他团队从手动驱动的流程中解放出来,以便他们能够更加独立、更加高效地工作来实现目标。2015 年,Google 将 Kubernetes 作为种子技术捐赠给了云原生计算基金会 (CNCF),该基金会是一个供应商中立的开源云原生计算中心。
如今,Kubernetes 已广泛用于生产环境,来管理 Docker 和几乎任何其他类型的容器运行时。虽然 Docker 包含自己的编排工具,但大多数开发人员改而选择 Kubernetes 容器编排。
作为开源系统,Kubernetes 服务得到了所有领先公有云供应商的支持,包括 IBM、Amazon Web Services (AWS)、Microsoft Azure 和 Google。Kubernetes 还可以在裸机服务器和虚拟机(位于私有云、混合云和边缘环境中)上运行,前提是主机操作系统为 Linux 或 Windows 版本。
此处详细介绍了六大 Kubernetes 用例,它们揭示了 Kubernetes 如何转变 IT 基础设施。
流量很高的网站和云计算应用程序每天都会收到数以百万计的用户请求。使用 Kubernetes 进行大规模云应用程序部署的一个关键优势是自动扩展。此过程使应用程序能够自动适应需求变化,并且具有速度、效率和最少的停机时间。例如,当需求波动时,Kubernetes 使应用程序能够持续运行并响应网络流量模式的变化。这有助于维持适量的工作负载资源,而不会出现过度配置或配置不足。
Kubernetes 采用水平 Pod 自动扩展 (HPA),通过扩展与特定部署相关的 Pod 副本(便于自我修复的克隆)的数量,来实现负载均衡(如针对 CPU 使用率或自定义指标)。这可以减少潜在的问题,如流量激增、硬件问题或网络中断。
注意:请勿将 HPA 与 Kubernetes 垂直 Pod 自动扩展 (VPA) 相混淆,后者会向已在为工作负载运行的 Pod 分配额外的资源,例如内存或 CPU。
包括政府、科学、金融和工程在内的各行各业都非常依赖于高性能计算 (HPC),这是一种处理大数据以执行复杂计算的技术。HPC 使用功能强大的处理器,速度极快,可迅速做出数据驱动的决策。HPC 的实际用途包括自动执行股票交易、天气预报、DNA 测序和飞机飞行模拟。
大量使用 HPC 的行业使用 Kubernetes 来管理 HPC 计算在混合和多云环境中的分布。Kubernetes 还可以作为一种灵活的工具,来支持高性能计算工作负载中涉及的批处理作业处理,从而增强数据和代码可移植性。
构建和部署人工智能 (AI) 和机器学习 (ML) 系统需要大量数据和复杂的流程,例如高性能计算和大数据分析。在 Kubernetes 上部署机器学习,使组织能够更轻松地自动管理和扩展 ML 生命周期,减少人工干预的需求。
例如,Kubernetes 容器化编排平台可以自动执行部分 AI 和 ML 预测性维护工作流程,包括运行状况检查和资源规划。Kubernetes 可以扩展或缩减 ML 工作负载,以满足用户需求、调整资源使用情况并控制成本。
机器学习依靠大型语言模型来执行高级自然语言处理 (NLP),例如文本分类、情感分析和机器翻译,而 Kubernetes 有助于加快大型语言模型的部署,以实现 NLP 过程的自动化。随着越来越多的组织转向生成式 AI 功能,他们正在使用 Kubernetes 来运行和扩展生成式 AI 模型,从而提供高可用性和容错能力。
总体而言,Kubernetes 提供了训练、测试、调度和部署 ML 和生成式 AI 模型所需的灵活性、可移植性和可扩展性。
微服务(或微服务架构)提供了一种现代云原生架构方法,其中每个应用程序均由众多松散连接且可独立部署的较小组件或服务所构成。例如,大型零售电子商务网站包含众多微服务。其中通常包括订单服务、支付服务、配送服务和客户服务。每个服务均有各自的 REST API,而其他服务可使用该 API 与其进行通信。
Kubernetes 旨在应对管理微服务架构中同时运行的所有独立组件所涉及的复杂性。例如,Kubernetes 的内置高可用性 (HA) 功能可确保即使在发生故障时也能持续运行。如果容器化应用程序或应用程序组件出现故障,Kubernetes 自我修复功能就会启动。自我修复功能可以立即重新部署应用程序或应用程序组件,匹配所需状态,这有助于维持正常运行时间和可靠性。
Kubernetes 可在任何地方使用,使组织能够更轻松地将应用程序从本地部署迁移到混合云和多云环境。Kubernetes 通过为软件开发人员提供内置命令来实现应用程序的有效部署,从而实现迁移标准化。Kubernetes 还可以根据环境要求,发布对应用程序的更改并扩展和缩减应用程序。
Kubernetes 提供跨本地部署和云环境的可移植性,因为它从应用程序中抽象出基础设施细节。这消除了对特定于平台的应用程序依赖项的需求,并且可以轻松地在不同的云供应商或数据中心之间,以最小的代价移动应用程序。
对于企业 DevOps 开发运维团队而言,能够快速更新和部署应用程序对于业务成功至关重要。Kubernetes 为团队提供软件系统开发和维护,以提高整体敏捷性。而且,Kubernetes API 接口可让软件开发人员和其他 DevOps 开发运维利益相关者轻松查看、访问、部署、更新和优化其容器生态系统。
CI/CD(表示持续集成 (CI) 和持续交付 (CD))已成为软件开发的重要环节。在 DevOps 开发运维中,CI/CD 通过为团队提供用于存储工作的单一存储库,并提供自动化工具以便一致地组合和测试代码并确保其正常运行,从而简化应用程序编码、测试和部署。Kubernetes 通过在云基础设施环境中自动部署容器并确保资源的高效利用,在云原生 CI/CD 管道中发挥着重要作用。
Kubernetes 在基础设施中发挥着关键的作用,这一点可从其超越容器编排的众多价值驱动用例中看出。这就是许多企业继续实施 Kubernetes 的原因。2021 年由 CNCF 开展的云原生调查显示,Kubernetes 的使用率已达到有史以来的最高点,96% 的组织在使用或评估容器化平台。根据同一项研究,Kubernetes 的使用率在非洲等新兴科技地区持续上升,其中 73% 的受访者在生产中使用 Kubernetes。
Kubernetes 计划并自动执行管理基于容器的架构所不可或缺的任务,包括容器部署、更新、服务发现、存储配置、负载均衡、运行状况监测等。IBM 帮助客户实现其应用程序的现代化,并使用 Kubernetes 和其他云原生解决方案来优化 IT 基础设施。
借助 IBM Cloud Kubernetes Service,在原生 Kubernetes 体验中部署安全且高度可用的集群。
使用 Red Hat OpenShift on IBM Cloud 为容器化平台容器化和部署 Kubernetes 集群。