创建部署

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

本文概述了 Kubernetes 部署,并介绍如何在 Azure Arc 启用的 AKS 中创建和更新部署。

Kubernetes 部署概述

部署是指管理性能并指定 Pod 所需行为的 Kubernetes 对象。 它指定应用程序的生命周期,包括分配给应用程序的 Pod。 部署提供了一种为应用程序传达所需状态的方法,控制器负责将当前状态更改为所需状态。

部署自动执行启动 Pod 实例的过程,并确保它们按照定义在群集内的所有节点上运行。 管理员和 IT 专业人员使用部署来传达他们希望从应用程序获取的内容,然后 Kubernetes 将执行所有必要的步骤来创建应用程序所需的状态。

虽然部署定义了应用程序的运行方式,但它们并不能保证应用程序在群集中的位置。 例如,如果应用程序需要每个节点上的 Pod 实例,则需要使用 DaemonSet。 对于有状态应用程序,StatefulSet 会提供唯一的网络标识符、持久存储和有序部署/缩放。

Kubernetes 部署对象可用于:

  • 部署副本 (replica) 集或 Pod。
  • 纵向扩展或缩减应用程序的实例数。
  • 更新应用程序的每个正在运行的实例。
  • 将应用程序的所有正在运行的实例回滚到另一个版本。
  • 暂停或继续部署。

有关详细信息,请参阅 Kubernetes 部署

创建部署

若要创建部署,可以使用 kubectl applykubectl create 命令。 由于维护和监视了所需数量的 Pod,因此它们在创建部署后运行并可用。 如果某个 Pod 出现故障,Kubernetes 会立即推出该 Pod 的副本以取代其在群集中的位置。

以下示例介绍 YAML 格式的部署清单文件的功能:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - image: nginx
          name: nginx
          ports:
            - containerPort: 80

若要查看部署、副本集和 Pod,请运行以下命令:

kubectl get deployment, replicaset, pod

更新部署

部署main优势是能够自动更新 Kubernetes 程序。 如果没有部署,你就必须手动结束所有旧 Pod,启动新 Pod 版本,并运行检查以查看创建 Pod 时是否存在任何问题。 你可以运行 kubectl describe deployment 来查看 Pod 的启动和删除顺序。

部署会自动执行更新过程,因为只需更新 Pod 模板或所需状态。 部署在后台通过创建新 Pod 或分配更多资源等操作来更改程序状态,直到完成所选更新。

如果部署出现问题,Kubernetes 会自动回滚到之前的版本。 此外,还可以使用 kubectl rollout undo 命令显式回滚到特定版本,或者可以使用 kubectl rollout pause 来暂时停止部署。

更新部署的策略

Kubernetes 提供了多种部署策略,因此你可以通过多种方式进行更新以满足环境需求。 最常见的三种更新策略如下:

  • 滚动更新:此更新是一个渐进的过程,使用它更新 Kubernetes 系统,对性能的影响很小,并且没有停机时间。 它可以最大限度地减少停机时间,但代价是更新速度慢。
  • 重新创建:此策略是一个孤注一掷的过程,使用它可以一次性更新系统的所有方面,并且包含短暂的停机时间。 它更新很快,但会导致停机时间。
  • Canary:此策略是一个部分更新过程,使用它可以对真实用户测试新程序版本,而无需承诺全面推出。 它可以为选定的少量用户快速更新,并在稍后全面推出。

后续步骤