Kubernetes 是什么?

随着越来越多的组织开始采用容器,以容器为中心的管理软件 Kubernetes 已成为部署和操作容器化应用的标准。Google Cloud 是 Kubernetes 诞生的地方 - Kubernetes 最初在 Google 开发,然后在 2014 年开源发布。Kubernetes 的构建以 15 年来运行 Google 的容器化工作负载的经验以及开源社区的宝贵贡献为依托。Kubernetes 受 Google 内部集群管理系统 Borg 的启发,能够简化与部署和管理应用相关的所有工作。Kubernetes 提供自动化的容器编排功能,提升系统可靠性,并减少日常运维所需的时间和资源。

通过 Google Skills 的动手实验检验所学

Kubernetes 的定义

Kubernetes(有时简写为“K8s”,其中“8”代表“K”和“s”之间的 8 个字母)是一个开源系统,支持在任何地方部署、扩缩和管理容器化应用。

Kubernetes 可自动执行容器管理的操作任务,其内置了用于部署应用、更改应用、根据不断变化的需求扩缩应用、监控应用等的命令,以便更轻松地管理应用。

Kubernetes 的工作原理

随着应用跨多个容器和服务器扩容,Kubernetes 有助于简化管理流程。它通过开源 API 进行部署编排,将容器分组为 Pod,并根据需求和资源可用性进行扩缩。Kubernetes 还能自动进行服务发现、负载均衡和资源分配,并通过健康监控实现自我修复(例如自动重启或复制容器)。

对于企业开发者,以下是 Kubernetes 工作原理的分步骤说明:

  • 定义应用:首先使用 YAML 文件定义应用的期望状态。这些文件指定了要运行的容器、所需资源(CPU、内存),以及如何将它们暴露到网络中。
  • 向 Kubernetes API 发送请求:您可将这些 YAML 文件提交到 Kubernetes API,通常使用 kubectl 命令行工具完成提交。
  • 调度器将 Pod 分配给节点:Kubernetes 调度器会分析应用需求,在集群中选择最适合运行容器(打包为 Pod)的节点。
  • Kubelet 启动容器:在每个节点上,Kubelet 进程接收来自控制平面的指令并启动容器。
  • Service 公开应用:Kubernetes Service 为应用提供稳定的 IP 地址和 DNS 名称,使其他应用即使在 Pod 被创建、销毁或重新调度时也能持续访问该应用。
  • 控制器确保达到期望状态:Kubernetes 控制器会持续监控应用状态,并在必要时采取修正操作。例如,如果某个 Pod 崩溃,控制器会自动创建一个新 Pod 来替代它。
  • 扩缩和更新:您可以通过更新部署配置中的副本数量,轻松实现应用的扩缩。Kubernetes 会自动创建或删除 Pod,以达到所需的规模。借助滚动更新,您可以在无需停机的情况下部署应用的新版本。

Kubernetes 有哪些优势?

自动化运营

Kubernetes 具有许多内置命令,可用于处理应用管理中繁重的工作,从而自动化日常操作。帮助您确保应用始终按照预期的方式运行。

基础架构抽象

安装 Kubernetes 后,它将代表您的工作负载处理计算、网络和存储。这使开发者可以专注于应用,而不必担心底层环境。

服务运行状况监控

Kubernetes 会对您的服务不间断地执行健康检查,重新启动有故障或停滞的容器,且只会在确认服务正常运行时向用户提供服务。

优化资源利用率

Kubernetes 会根据容器需求高效地将其分配到节点上,从而优化资源利用率。这进一步有助于减少资源浪费,降低基础设施成本。

简化应用管理

使用 Kubernetes 可优化应用管理流程。Kubernetes 提供了一种统一的方法,可用于部署、更新和管理不同复杂程度的应用。

可移植性增强

Kubernetes 是一个开源平台,能够在从本地数据中心到公有云的多种环境中保持一致运行,为企业提供灵活性和可移植性。

利用 Google Cloud 解决业务难题

新客户可获得 $300 赠金,用于抵扣 Google Cloud 的费用。
与 Google Cloud 销售专员联系,详细讨论您的独特挑战。

Kubernetes 与 Docker 的对比

Kubernetes 和 Docker 通常被误认为只能二选一,其实它们都是用于运行容器化应用的技术,彼此不同但相互补充。

Docker 可以将运行应用所需的一切资源放入一个箱子中,这个箱子可以存储起来并在需要的时间和位置打开。将应用装箱后,就需要一种方法来管理它们,这就是 Kubernetes 的作用。

Kubernetes 是希腊语,意思是“船长”。就像船长负责船舶在海上的安全航行一样,Kubernetes 负责安全运送这些箱子并将其交付到可以使用的地点。

  • Kubernetes 可以和 Docker 搭配使用,也可以独立使用
  • Docker 并不是 Kubernetes 的替代品,因此其实也不存在“Kubernetes 与 Docker 的区别”这个问题。将 Kubernetes 与 Docker 结合使用可以容器化您的应用,并大规模运行它们
  • Docker 和 Kubernetes 之间的差异与它们在容器化和运行应用中所扮演的角色有关
  • Docker 是在容器中打包和分发应用的开放式业界标准
  • Kubernetes 使用 Docker 来部署、管理和扩缩容器化应用

常见 Kubernetes 应用场景

Kubernetes 用于创建易于在任何地方管理和部署的应用。当作为托管式服务时,Kubernetes 可为您提供一系列解决方案以满足您的需求。以下是一些常见使用场景。

提高开发速度

Kubernetes 可帮助您构建基于微服务的云原生应用它还支持容器化现有应用,为应用现代化改造奠定基础,帮助您更快地开发应用。

  • 示例:某金融服务公司使用 Kubernetes 为其网上银行平台部署微服务,从而加快开发周期并提升可伸缩性

在任何地方部署应用

Kubernetes 可以在任何地方使用,让您可以在本地部署、公有云部署以及混合部署之间运行应用。因此,您可以在任何需要的地方运行您的应用。

  • 示例:某全球电子商务公司使用 Kubernetes 在多个云服务提供商中部署其应用,以确保高可用性并避免供应商锁定

运行高效的服务

Kubernetes 可自动调整运行服务所需的集群规模。这使您可以根据需求自动扩缩并高效运行应用。

  • 示例:某媒体流服务使用 Kubernetes 根据观看内容的用户数量自动扩缩其视频编码基础架构,从而优化资源利用率并降低成本。

常见问题解答

探索有关 Kubernetes 的常见问题

Kubernetes 集群由运行容器化应用的节点(虚拟机或物理机)组成,Kubernetes 对这些应用进行编排。

Kubernetes Pod 是最小的可部署单元,可包含一个或多个容器,代表一个正在运行的进程实例。

Kubernetes Deployment 通过管理副本和顺利执行更新,确保应用处于所需状态。

Kubernetes 服务是一种 Kubernetes 对象,可为应用提供稳定的 IP 地址和 DNS 名称,使其他应用能够访问该应用。

您可以通过更新部署配置中的副本数量来扩缩应用。Kubernetes 会自动创建或移除 Pod,以达到所需的规模。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。