From f7ed1eee55bfb03b42e4ae25d12c4dfd7a529d53 Mon Sep 17 00:00:00 2001 From: wangyamei Date: Sun, 18 Nov 2018 09:37:37 +0800 Subject: [PATCH] delete-stateful-set (#10817) --- .../run-application/delete-stateful-set.md | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 content/zh/docs/tasks/run-application/delete-stateful-set.md diff --git a/content/zh/docs/tasks/run-application/delete-stateful-set.md b/content/zh/docs/tasks/run-application/delete-stateful-set.md new file mode 100644 index 0000000000..11f4ae3f22 --- /dev/null +++ b/content/zh/docs/tasks/run-application/delete-stateful-set.md @@ -0,0 +1,133 @@ +--- +reviewers: +- bprashanth +- erictune +- foxish +- janetkuo +- smarterclayton +title: 删除 StatefulSet +content_template: templates/task +weight: 60 +--- + +{{% capture overview %}} + + +本文介绍如何删除 StatefulSet。 + +{{% /capture %}} + +{{% capture prerequisites %}} + + +* 本文假设在您的集群上已经运行了由 StatefulSet 创建的应用。 + +{{% /capture %}} + +{{% capture steps %}} + +## 删除 StatefulSet + + +您可以像删除 Kubernetes 中的其他资源一样删除 StatefulSet:使用 `kubectl delete` 命令,并按文件或者名字指定 StatefulSet。 + +```shell +kubectl delete -f +``` + +```shell +kubectl delete statefulsets +``` + + +删除 StatefulSet 之后,您可能需要单独删除关联的无头服务。 + +```shell +kubectl delete service +``` + + +通过 kubectl 删除 StatefulSet 会将其缩容为0,因此删除属于它的所有pods。 +如果您只想删除 StatefulSet 而不删除 pods,使用 `--cascade=false`。 + +```shell +kubectl delete -f --cascade=false +``` + + +通过将 `--cascade=false` 传递给 `kubectl delete`,在删除 StatefulSet 对象之后,StatefulSet 管理的 pods 会被保留下来。如果 pods 有一个标签 `app=myapp`,则可以按照如下方式删除它们: + +```shell +kubectl delete pods -l app=myapp +``` + +### Persistent Volumes + + +删除 StatefulSet 管理的 pods 并不会删除关联的卷。这是为了确保您有机会在删除卷之前从卷中复制数据。在pods离开[终止状态](/docs/concepts/workloads/pods/pod/#termination-of-pods)后删除 PVC 可能会触发删除支持的 Persistent Volumes,具体取决于存储类和回收策略。声明删除后,您永远不应该假设能够访问卷。 + + +**注意:删除 PVC 时要谨慎,因为这可能会导致数据丢失。** + + +### 完全删除 StatefulSet + + +要简单地删除 StatefulSet 中的所有内容,包括关联的 pods,您可能需要运行一系列类似于以下内容的命令: + +```shell +grace=$(kubectl get pods --template '{{.spec.terminationGracePeriodSeconds}}') +kubectl delete statefulset -l app=myapp +sleep $grace +kubectl delete pvc -l app=myapp + +``` + + +在上面的例子中,pods 的标签为 `app=myapp`;适当地替换您自己的标签。 + + +### 强制删除 StatefulSet 类型的 pods + + +如果您发现 StatefulSet 中的某些 pods 长时间处于 'Terminating' 或者 'Unknown' 状态,则可能需要手动干预以强制从 apiserver 中删除 pods。这是一项潜在的危险任务。详细信息请阅读[删除 StatefulSet 类型的 Pods](/docs/tasks/manage-stateful-set/delete-pods/)。 + +{{% /capture %}} + +{{% capture whatsnext %}} + + +了解更多有关[强制删除 StatefulSet 类型的 Pods](/docs/tasks/run-application/force-delete-stateful-set-pod/)。 + +{{% /capture %}} + +