创建 StatefulSet

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

本文介绍如何创建、更新和删除 StatefulSet,这些 StatefulSet 用于在 Azure Arc 启用的 AKS 中的 AKS 部署中维护超出 Pod 生命周期的应用程序的状态。

StatefulSet 概述

StatefulSet:维护超出单个 Pod 生命周期的应用程序的状态。 与部署一样,StatefulSet 创建并管理至少一个具有唯一、持久标识和稳定主机名的相同 Pod。 StatefulSet 中的副本使用顺序方法来进行部署、缩放和升级。

StatefulSet 适合需要稳定且唯一的标识符、持久存储、有序部署和缩放的应用程序。 这类应用的例子包括 MySQL、MongoDB、Kafka 和 Cassandra。 无状态应用程序(如 Apache 和 Tomcat)不关心它们正在使用的网络,也不需要持久存储。

StatefulSet 的主要组件是永久性卷预配程序以及无外设服务。 有关详细信息,请参阅 StatefulSet

如何创建 StatefulSet

使用 kubectl createkubectl apply 命令创建 StatefulSet。 例如:

kubectl create –f statefulset.yaml

在同一清单 YAML 文件中,也可以创建 StatefulSet 使用的无外设服务。

若要查看为 StatefulSet 创建的组件,请运行以下命令:

kubectl get statefulset

如果要查看永久性卷,请运行 kubectl get pv。 若要查看永久性卷声明,请运行 kubectl get pvc

更新 StatefulSet

若要更新 StatefulSet,请编辑清单文件,并运行创建 StatefulSet 时使用的相同命令: kubectl apply –f statefulset.yaml

可以使用 OnDelete 更新或 滚动 更新作为更新策略:

  • 使用 OnDelete 更新时,在应用清单时不会替换 Pod,但必须在创建新版本之前手动删除现有的 StatefulSet Pod。
  • 在滚动更新中,在应用清单时,将删除 StatefulSet Pod,然后按倒序替换这些 Pod。

删除 StatefulSet

使用 kubectl delete 命令删除 StatefulSet 并单独删除无外设服务。 若要删除 StatefulSet,请运行以下命令:

kubectl delete statefulset <statefulset_NAME>

然后,若要删除无外设服务,请运行以下命令:

kubectl delete service <svc_NAME>

若要删除永久性卷和永久性卷声明,请分别使用 kubectl delete pvkubectl delete pvc 命令。 为防止数据丢失,在删除 StatefulSet 时,不会删除永久性卷和永久性卷声明。

后续步骤