$ kubectl delete sts web --cascade=orphan
statefulset.apps "web" deleted
$ kubectl get pod -l app=nginx
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 2m4s
web-1 1/1 Running 0 2m1s
web-2 1/1 Running 0 32s
由于此时删除了 StatefulSet,它管理的 Pod 变成了“孤儿” Pod,因此单独删除 Pod 时,该 Pod 不会被重建:
$ kubectl delete pod web-0
pod "web-0" deleted
$ kubectl get pod -l app=nginx
NAME READY STATUS RESTARTS AGE
web-1 1/1 Running 0 2m25s
web-2 1/1 Running 0 56s
当再次创建此 StatefulSet 时:
web-0 会被重新创建
由于 web-1 已经存在,因此不会被再次创建
因为最初此 StatefulSet 的 replicas 是 2,所以 web-2 会被删除
忽略 AlreadyExists 错误,因为只删除了 StatefulSet 并没删除 Service,所以在此创建 Service 时会提示已经存在该 Service:
$ kubectl create -f web-statefulset.yaml
statefulset.apps/web created
Error from server (AlreadyExists): error when creating "web-statefulset.yaml": services "nginx" already exists
$ kubectl get pod -w -l app=nginx
NAME READY STATUS RESTARTS AGE
web-1 1/1 Running 0 2m44s
web-2 1/1 Running 0 75s
web-0 0/1 Pending 0 0s
web-0 0/1 Pending 0 0s
web-0 0/1 ContainerCreating 0 1s
web-0 0/1 ContainerCreating 0 1s
web-0 1/1 Running 0 2s
web-2 1/1 Terminating 0 81s
web-2 1/1 Terminating 0 82s
web-2 0/1 Terminating 0 82s
web-2 0/1 Terminating 0 82s
web-2 0/1 Terminating 0 82s
web-2 0/1 Terminating 0 82s
$ kubectl get pod -l app=nginx
NAME READY STATUS RESTARTS AGE
web-0 1/1 Running 0 32s
web-1 1/1 Running 0 3m20s
级联删除
省略 --cascade=orphan 参数即为级联删除:
$ kubectl delete sts web
statefulset.apps "web" deleted
$ kubectl get pod -l app=nginx
No resources found in default namespace.