本任务展示如何删除 StatefulSet。
你可以像删除 Kubernetes 中的其他资源一样删除 StatefulSet:使用 kubectl delete
命令,并按文件或者名字指定 StatefulSet。
kubectl delete -f <file.yaml>
kubectl delete statefulsets <statefulset 名称>
删除 StatefulSet 之后,你可能需要单独删除关联的无头服务。
kubectl delete service <服务名称>
当通过 kubectl
删除 StatefulSet 时,StatefulSet 会被缩容为 0。 属于该 StatefulSet 的所有 Pod 也被删除。 如果你只想删除 StatefulSet 而不删除 Pod,使用 --cascade=orphan
。
kubectl delete -f <file.yaml> --cascade=orphan
通过将 --cascade=orphan
传递给 kubectl delete
,在删除 StatefulSet 对象之后, StatefulSet 管理的 Pod 会被保留下来。如果 Pod 具有标签 app=myapp
,则可以按照 如下方式删除它们:
kubectl delete pods -l app=myapp
删除 StatefulSet 管理的 Pod 并不会删除关联的卷。这是为了确保你有机会在删除卷之前从卷中复制数据。 在 Pod 离开终止状态 后删除 PVC 可能会触发删除背后的 PV 持久卷,具体取决于存储类和回收策略。 永远不要假定在 PVC 删除后仍然能够访问卷。
说明: 删除 PVC 时要谨慎,因为这可能会导致数据丢失。
要删除 StatefulSet 中的所有内容,包括关联的 pods,你可以运行 一系列如下所示的命令:
grace=$(kubectl get pods <stateful-set-pod> --template "{{.spec.terminationGracePeriodSeconds}}")
kubectl delete statefulset -l app=myapp
sleep $grace
kubectl delete pvc -l app=myapp
在上面的例子中,Pod 的标签为 app=myapp
;适当地替换你自己的标签。
如果你发现 StatefulSet 的某些 Pod 长时间处于 "Terminating" 或者 "Unknown" 状态, 则可能需要手动干预以强制从 API 服务器中删除这些 Pod。
Docker kill 命令Docker 命令大全docker kill :杀掉一个运行中的容器。语法docker kill [OPTIONS] CONTAINER [CONTAINER...]OPTI...
Docker port 命令Docker 命令大全docker port :列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。语法do...
Docker login/logout 命令Docker 命令大全docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 D...
jQuery Mobile 表单jQuery Mobile 会自动为 HTML 表单自动添加样式,让它们看起来更具吸引力,触摸起来更具友好性。 jQuery Mobi...
在Neo4j中,“Id”是节点和关系的默认内部属性。 这意味着,当我们创建一个新的节点或关系时,Neo4j数据库服务器将为内部使用分...