Kubernetes 和 AKS 概述

已完成

在探索容器化原则以提高 Contoso 计算环境中的工作负载敏捷性和密度时,你意识到需要关注容器业务流程,而不是单个容器的部署。 尽管后者带来了简易性,但缺乏可伸缩性和复原能力。 通过对容器业务流程的研究,你很快确定 Kubernetes 和 AKS 是计划内实现的最适合候选项。

什么是 Kubernetes?

Kubernetes 是一种可扩展的基于 Linux 的开放源代码平台,用于编排容器化工作负载。 为了确保复原能力,典型的 Kubernetes 部署由多个群集服务器组成,这些服务器称为“节点”。 其中一些节点形成负责管理其余将在其上部署工作负载的节点的控制平面。 对于 Kubernetes,这些工作负载由称为 Pod 的容器化应用程序实例组成。

备注

控制平面的核心组件之一是 API Server,它提供了用于配置和管理 Kubernetes 群集的接口。

备注

一个 Pod 大致相当于一个容器,尽管它可以包括在同一群集节点上运行的多个紧密耦合的容器。

通常,Pod 是无状态的,不提供任何固有的复原功能。 若要实现高可用性和冗余,则可以使用部署来预配它们。 通常,一个部署由共用相同配置并基于相同映像运行容器的 Pod 的多个副本组成。 Kubernetes 自动管理部署中 Pod 的生命周期,以最佳方式跨可用的群集节点重新创建任何失败的 Pod。

部署还简化了对 Pod 中运行的容器映像的更新,而不会影响容器化工作负载的可用性。 通过定义中断预算,可以控制在整个更新过程中必须保持联机的 Pod 副本数。

若要直接连接到 Pod,则可以实现另一种称为“服务”的 Kubernetes 资源类型。 例如,借助服务,可以建立从 Internet 到同一部署内的一组 Pod 上托管的 Web 服务的外部负载均衡连接。

Kubernetes 提供了将 Pod、服务、部署和其他许多群集组件隔离到命名空间中的功能。 命名空间形成逻辑边界,便于限制对群集资源的创建、查看或使用。

Kubernetes 的主要优势有哪些?

Kubernetes 为使用共享计算、网络和存储资源的多容器环境提供了一致的管理模型。 它提供了声明性部署和管理模型,可以在其中描述所需的配置,并将其实现留给 Kubernetes 控制平面。

备注

通过声明性管理模型,可以使用 YAML 格式的清单文件来预配、修改和删除 Kubernetes 组件,如 Pod、服务和部署。 还可以使用打包的 YAML 文件集合(称为“Helm 图表”)。 Helm 是 Kubernetes 的包管理器,可以方便地将更复杂的工作负载部署到 Kubernetes 群集。

此外,Kubernetes 还带来了一些好处,比如:

  • 自愈 Pod
  • 自动缩放 Pod
  • 在虚拟化方案中自动缩放自动群集节点
  • 自动滚动更新和回滚 Pod 部署
  • 自动发现新的 Pod 部署
  • 在运行相同工作负载的各个 Pod 之间进行负载均衡

借助 Kubernetes,可以将一组物理服务器或虚拟服务器视为统一计算资源,同时使用容器化工作负载的敏捷性和密度来优化服务器。 尽管 Kubernetes 简化了容器管理,但它的管理涉及许多配置、管理和维护任务:

  • 部署、缩放、负载均衡、日志记录和监视等方面都是可选的。 由你来确定和实现满足自己特定需求的最佳配置。
  • Kubernetes 本身并不提供中间件、数据处理框架或数据库。 不过,你可选择使用容器实现任何相应的功能。
  • 你负责维护自己的 Kubernetes 环境。 例如,你需要管理操作系统升级和 Kubernetes 升级。 还需要管理群集节点可用的硬件配置,例如网络、内存和存储。

备注

托管 Kubernetes 产品/服务(如 AKS)减少了或甚至消除了其中一些挑战。

知识检查

1.

在评估将 Kubernetes 用于要部署到 Contoso 的 Azure Stack HCI 环境的容器化工作负载的适用性时,你意识到需要限制使用相同 Kubernetes 群集的用户对容器化资源的创建、查看或使用。 应使用哪种 Kubernetes 功能来限制用户?