运营商提供的链接可能不可用。见update
章节
正如您指定的那样,您使用此https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yamldgraph
创建了服务器,因此只需使用此删除您创建的资源:
$ kubectl delete -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml
更新
基本上,这是对原因的解释。
Kubernetes 有一些工作负载(它们的清单中包含 PodTemplate)。这些是:
看,谁控制谁:
- ReplicationController -> Pod(s)
- ReplicaSet -> Pod(s)
- 部署 -> ReplicaSet(s) -> Pod(s)
- StatefulSet -> Pod(s)
- DaemonSet -> Pod(s)
- 作业 -> 吊舱
- CronJob -> 作业 -> Pod
a -> b
表示a
创建和控制,清单中b
的字段值
是 的引用。例如,.metadata.ownerReference
b
a
apiVersion: v1
kind: Pod
metadata:
...
ownerReferences:
- apiVersion: apps/v1
controller: true
blockOwnerDeletion: true
kind: ReplicaSet
name: my-repset
uid: d9607e19-f88f-11e6-a518-42010a800195
...
这样,删除父对象也会通过garbase collection删除子对象。
因此,a
' 控制器确保a
' 当前status
与
a
'匹配spec
。说,如果一个删除b
,那么b
将被删除。But
a
is still alive and 's controller 看到'current和'sa
之间存在差异。So的控制器重新创建一个新的obj 以匹配' 的规范。a
status
a
spec
a
b
a
操作创建了一个部署,该部署创建了 ReplicaSet,该 ReplicaSet 进一步创建了 Pod。所以这里的解决方案是删除作为部署的根 obj。
$ kubectl get deploy -n {namespace}
$ kubectl delete deploy {deployment name} -n {namespace}
笔记本
删除过程中可能出现的另一个问题如下:如果该.metadata.finalizers[]
部分中有终结器,则只有在完成关联控制器执行的任务后,才会执行删除。如果一个人想要删除对象而不执行终结器的操作,那么他/她必须首先删除那些终结器。例如,
$ kubectl patch -n {namespace} deploy {deployment name} --patch '{"metadata":{"finalizers":[]}}'
$ kubectl delete -n {namespace} deploy {deployment name}