创建部署
适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本文概述了 Kubernetes 部署,并介绍了如何在 Azure Arc 启用的 AKS 中创建和更新这些部署。
Kubernetes 部署概述
部署是指管理性能并指定 Pod 所需行为的 Kubernetes 对象。 它指定应用程序的生命周期,包括分配给应用程序的 Pod。 部署提供了一种传达应用程序所需状态的方法,控制器用于将当前状态更改为所需状态。
部署自动执行启动 Pod 实例的过程,并确保它们按照定义在群集内的所有节点上运行。 管理员和 IT 专业人员使用部署来传达应用程序所需的内容,然后 Kubernetes 采取所有必要的步骤来创建应用程序的所需状态。
虽然部署定义了应用程序的运行方式,但它们并不能保证应用程序在群集中的位置。 例如,如果应用程序需要每个节点上 Pod 的实例,则需要使用 DaemonSet。 对于有状态应用程序,StatefulSet 会提供唯一的网络标识符、持久存储和有序部署/缩放。
Kubernetes 部署对象可用于:
- 部署副本集或 Pod。
- 纵向扩展或缩减应用程序的实例数。
- 更新应用程序的每个正在运行的实例。
- 将应用程序的所有正在运行的实例回滚到另一个版本。
- 暂停或继续部署。
有关详细信息,请参阅 Kubernetes 部署。
创建部署
若要创建部署,可以使用 kubectl apply
或 kubectl 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
更新部署
部署的主要优点是能够自动更新 Kubernetes 程序。 如果没有部署,你就必须手动结束所有旧 Pod,启动新 Pod 版本,并运行检查以查看创建 Pod 时是否存在任何问题。 你可以运行 kubectl describe deployment
来查看 Pod 的启动和删除顺序。
部署会自动执行更新过程,只需更新 Pod 模板或所需状态即可。 部署在后台通过创建新 Pod 或分配更多资源等操作来更改程序状态,直到完成所选更新。
如果部署出现问题,Kubernetes 会自动回滚到之前的版本。 此外,还可以使用 kubectl rollout undo
命令显式回滚到特定版本,或者可以使用 kubectl rollout pause
来暂时停止部署。
更新部署的策略
Kubernetes 提供了多种部署策略,因此你可以通过多种方式进行更新以满足环境需求。 最常见的三种更新策略如下:
- 滚动更新:此更新是一个渐进的过程,使用它更新 Kubernetes 系统,对性能的影响很小,并且没有停机时间。 它可以最大限度地减少停机时间,但代价是更新速度慢。
- 重新创建:此策略是一个孤注一掷的过程,使用它可以一次性更新系统的所有方面,并且包含短暂的停机时间。 它更新很快,但会导致停机时间。
- Canary:此策略是一个部分更新过程,使用它可以对真实用户测试新程序版本,而无需承诺全面推出。 它可以为选定的少量用户快速更新,并在稍后全面推出。