在查看文档时,有一个api调用删除'a'pod,有没有办法杀死所有命名空间中的所有pod?
没有命令可以完全按照你的要求去做。
这是一些近距离比赛。
您可以使用以下命令删除单个命名空间中的所有窗格:
kubectl delete --all pods --namespace=foo
您可以使用以下命令删除所有命名空间以及每个命名空间中的每个对象(但不是未命名空间的对象,如节点和某些事件):
kubectl delete --all namespaces
但是,后一个命令可能不是你想要做的事情,因为它会删除kube-system命名空间中的东西,这会使你的集群无法使用。
此命令将删除除kube-system之外的所有名称空间,这可能很有用:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
kubectl delete ns $each
done
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
摆脱它们讨厌的复制控制器也是如此。
你只需要sed
来做到这一点:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
解释:
kubectl get pods --all-namespaces
获取所有命名空间中所有pod的列表。--no-headers=true
选项隐藏标题。s
的sed
命令获取前两个单词,分别代表namespace
和pod's name
,然后使用它们组装delete
命令。delete
命令就像:kubectl --namespace kube-system delete pod heapster-eq3yw
。e
命令的s
修饰符执行上面汇编的命令,这将执行实际的delete
工作。要避免在kube-system
命名空间中删除pod,只需在grep -v kube-system
命令之前添加kube-system
以排除sed
命名空间。
kubectl delete pods --all
那会删除所有的pod。
这同样适用于服务,部署,配置映射和作业。
如果您已经重新创建了pod,请考虑先删除所有部署
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
只需将NAMESPACE和DEPLOYMENT替换为相应的,您可以通过以下命令获取所有部署信息
kubectl get deployments --all-namespaces
这是一个可以使用grep扩展的单行来按名称过滤。
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}