创建 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 时不会删除永久性卷和永久性卷声明。

后续步骤