Alan Zeichick | 高级撰稿人 | 2025 年 9 月 5 日
Kubernetes 是一个开源平台,用于管理包含大量容器化服务的超大型应用。Kubernetes 由 Google 工程师于 2014 年开发,并在不久后以开源形式发布,如今已成为一个蓬勃发展的生态系统,几乎得到所有云技术服务提供商的支持。Kubernetes 既可用于管理基于微服务构建的云原生应用,也可用于管理运行在本地或云端的传统应用。
Kubernetes 的强大之处部分在于其自动化能力 — 它能大幅减少在网络中管理应用所需的工作量。
Kubernetes 是一个开源系统,用于部署、管理和缩放容器化应用,特别是基于微服务架构开发的云原生应用。Kubernetes 有时缩写为 K8s,支持管理员将容器组织为集群,从而更易于管理。
Kubernetes 能做什么?首先,它能部署容器 — 容器中可以运行完整应用,也可以是应用的某个组件(通常称为服务)。这些容器会被部署到服务器上,服务器可以位于云端、本地环境,也可以分布在多云配置下的多个云技术平台,或是混合云/本地配置结合的架构中。
容器部署完成后,Kubernetes 会提供发现能力,使应用或服务能够找到其他容器中它所需要的服务。Kubernetes 会将流量导向其管控下的正确资源。如果系统为应对高并发需求而运行了多个容器化应用或服务的副本,Kubernetes 会自动平衡负载。
Kubernetes 的强大之处在于,它可以按照部署的合理需求对容器进行分组。例如,它可以将共享同一存储和网络的若干容器组合成一个 pod(容器组)— 这是您经常会看到的术语。您还会看到 Kubernetes 节点的相关表述。节点是承载容器的独立机器,可以是物理服务器或传统虚拟机。运行着 Kubernetes 的一组节点集合(即一组物理或虚拟容器所在的集群),被称为集群。
针对每一个容器、pod、节点和集群,Kubernetes 都会管理存储资源,检测并重启故障容器(这个过程称为“自我修复”),甚至可以在分布式应用中统一实施安全协议。它可被配置用于管理密码、安全令牌和加密密钥,让关键资产的保护变得更轻松。
Kubernetes 平台的开发由云原生计算基金会 (CNCF) 负责监督。
容器通常会取代另一种云部署模式:虚拟机 (VM)。容器比 VM 更轻量,因为它们共享主机服务器的底层操作系统和设备驱动程序。相比之下,VM 规模更大,且需要更多处理资源,因为每个 VM 都包含独立的操作系统。因此,一台服务器可以运行更多的容器,更重要的是,能将更多处理器和内存资源用于运行应用,而非维护多个操作系统实例(每个 VM 一个)。虽然在某些特定场景下仍需要使用 VM,但对大多数云技术应用部署而言,容器是效率高得多的方案。
Kubernetes 和容器虽然相关,但它们被视为互补技术。Kubernetes 是一个容器管理平台,通常用于部署成百上千个容器的大规模场景。而容器本身,是将某项功能(无论是微服务还是完整应用)所需的全部代码和依赖项,打包成一种可执行的格式。
Kubernetes 是一款同时管理大量容器的工具,通常用于云端。Kubernetes 有时也称为云操作系统,能够帮助企业规模化地管理容器。
关键要点
Kubernetes 是一个能够自动部署、缩放和管理容器的平台。Kubernetes 还具备容器自我修复能力,即检测容器故障并进行修复。Kubernetes 的核心就是编排:就像交响乐团指挥引导乐手一样,它清楚需要执行的任务,让所有容器稳定就位、正常运行,并在出现异常时及时处理。
正如交响乐团指挥依照乐谱指挥钢琴、小提琴、大提琴和铜管乐器声部演奏,Kubernetes 也依靠一份文档来定义应用容器的预期状态。这份文档称为配置文件,它描述了应用正常运行所需的功能,并指定由哪些容器提供这些功能。配置文件中还会列出可供应用容器使用的服务器、存储设备、网络及其他物理机器资源。
启动应用时,Kubernetes 会根据配置文件将所需容器加载到可用服务器上,然后在容器内运行软件。它会监控每台服务器(或称节点)的资源使用情况,确保系统不会过载。如果服务器负载过高,它会在负载较低的服务器上启动新容器,再停止旧容器,实现容器迁移。如果某个容器本身过载,Kubernetes 会在另一台服务器上启动完全相同的容器副本,并自动配置负载均衡器来分配工作负载。随着需求增长,它会根据需要启动第三个、甚至更多容器。当工作负载下降时,Kubernetes 会关闭多余容器,以节约成本、释放服务器资源供其他任务使用。
当容器发生故障时,Kubernetes 会迅速在另一台服务器上启动新容器,并将网络流量从故障区域切换走,从而实现快速故障转移。
想象一下,您有一个需要成百上千个容器的应用,每个容器都为该应用提供所需服务。系统管理员可以手动部署和管理这些容器,也可以借助自动化工具完成负载均衡、故障检测等特定任务。事实上,市场上确实存在用于小规模容器部署管理的工具,这类工具通常被软件开发人员和 DevOps 团队用于构建和测试容器化软件。
然而,如果没有一套更完善的编排系统,系统管理的工作量最终会变得难以承受。
Kubernetes 的优势在于,它是一个统一平台,能够处理从容器部署、缩放到故障修复的全流程自动化任务。此外,Kubernetes 是开源项目,获得了广泛支持,包括所有主要云技术服务提供商。简而言之,它无处不在。这使得 Kubernetes 成为管理大型企业级容器化应用的首选系统。
当企业决定将应用容器化时,采用 Kubernetes 来编排这些容器是非常合理的选择 — 尤其是考虑到它能带来广泛的收益。
创造 Kubernetes 的 Google 工程师们是根据古希腊语中“领航员”(或“舵手”,也就是操控船只航向的人)一词来命名它的,因为 Kubernetes 负责调度和管理一整支容器“舰队”。就像真正的集装箱货轮一样,Kubernetes 依赖众多组件协同工作,才能将数据“货物”运送到指定位置。下面是在讨论容器与 Kubernetes 编排平台时,您常会遇到的术语。
Kubernetes 不仅仅是一个容器管理平台,它还是一款成熟的编排工具,能够自动化并简化从设计、部署到生产使用的整个应用生命周期。其强大的功能集有助于高效管理复杂的分布式应用。以下是 Kubernetes 的部分关键特性:
尽管 Kubernetes 已经经过多年打磨,但它仍然存在陡峭的学习曲线。不过,花时间学习 Kubernetes,也远比使用其他方式来管理大型分布式应用要好得多。以下是需要考虑的一些挑战:
企业将 Kubernetes 用于各类应用,涵盖电商、制造、科研、金融、公共事业等几乎所有行业。许多使用容器的大型分布式应用,都能从 Kubernetes 的编排和自动化能力中受益。以下是 Kubernetes 能真正发挥优势的几个常见场景。
Kubernetes 与 AI 结合能为企业带来变革性影响,因为 Kubernetes 在云端 AI 工作负载的管理和编排中发挥着关键作用。具体而言,Kubernetes 为 AI 模型的训练和部署提供了稳定且灵活的平台,并具备多项优势:
过去十年间,Kubernetes 被广泛采用,催生了由各种工具、服务和支撑技术构成的繁荣的生态系统。这一生态系统进一步增强了 Kubernetes 的能力,为企业提供了多样化选择,使其能够定制基础设施和开发流程。该生态系统的主要类别包括:
如果要讨论 Kubernetes 生态系统,却不提及 KubeCon 这个由 云原生计算基金会 (CNCF) 举办、面向 Kubernetes 开发人员和用户的年度大会,那便是不完整的。自 2015 年首届 KubeCon(500 名参会者)召开以来,该大会的规模已大幅增长。2024 年,在盐湖城举办的会议吸引了超过 9000 名开发人员和工程师参会。
Kubernetes 的优秀实践足以写成一本书 — 事实上,相关书籍已经有很多了。千万别搞错:Kubernetes 是复杂的。不过,遵循这些优秀实践能够帮助企业成功地利用这个平台。
OCI Kubernetes Engine (OKE) 是由 Oracle 托管的容器编排服务,可缩短构建云原生应用的时间并降低成本。OKE 有助于简化企业级 Kubernetes 的大规模运营,助力您轻松部署和管理 AI 等资源密集型工作负载,并实现自动缩放、打补丁和升级。OKE 提供:
Kubernetes 平台能够编排和自动执行应用部署和管理,彻底变革了云原生时代的应用运行方式。随着 Kubernetes 持续发展并不断普及,其重要性日益凸显。拥抱 Kubernetes 的企业能够获得显著的竞争优势,因此无论是开发人员还是企业管理者,掌握这项技术都至关重要。
Kubernetes 对云原生开发非常重要,它是打造更具弹性、可扩展性和敏捷性应用的关键 — 无论这些应用运行在云端、本地还是混合云或多云模式中。
为什么 Kubernetes 是企业云战略的关键组成部分?
Kubernetes 之所以至关重要,是因为它是企业部署、缩放和管理分布式应用的重要方式,尤其是在云中运行的应用。Kubernetes 的自动化能力在提升应用可靠性的同时,还能充分提高资源利用率,从而降低成本。
企业在大规模采用 Kubernetes 时,应考虑哪些关键因素?
主要有两大因素需要考虑。第一是组织准备度:工程师和开发人员是否已准备好接受这种应用开发和部署模式?第二是技术层面:是否具备合适的架构方案,能够以安全、稳定且符合治理要求的方式设计和部署 Kubernetes 和容器?
企业大规模运行 Kubernetes 时,主要的成本考量有哪些?
Kubernetes 可以通过充分利用云技术资源、在闲置时释放服务器和存储等资源来帮助降低成本。但与此同时,企业还需要承担培训、工具采购以及为充分利用资源而优化网络和应用模型所产生的相关成本。
企业如何确保从传统基础设施平稳过渡到 Kubernetes?
这是一次重大转型!可以先从一个已经运行在单个或少数容器中的小型应用入手,引入 Kubernetes。可考虑优先选择基于云技术的 Kubernetes 服务,由服务提供商代为管理数据层,而不是一开始就自行学习、部署和运营所有组件。通过尝试升级、回滚、监控、模拟故障等操作,帮助团队积累经验,以便后续负责更大型的项目,例如将单体应用重构为基于微服务的应用。
注:为免疑义,本网页所用以下术语专指以下含义: