[rest] 모든 kubernetes 네임 스페이스에서 모든 포드를 삭제하는 명령
문서를 살펴보면 ‘a’포드를 삭제하는 API 호출이 있지만 모든 네임 스페이스에서 모든 포드를 종료하는 방법이 있습니까?
답변
요청한 내용을 정확하게 수행하라는 명령은 없습니다.
다음은 일부 일치하는 항목입니다.
이 명령을 사용하여 단일 네임 스페이스에서 모든 포드를 삭제할 수 있습니다.
kubectl delete --all pods --namespace=foo
네임 스페이스에서 모든 배포를 삭제할 수도 있습니다. 그러면 네임 스페이스에 해당하는 배포에 연결된 모든 포드가 삭제됩니다.
kubectl delete --all deployments --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
모든 네임 스페이스의 모든 포드 목록을 가져 오려면 command 를 사용하십시오 .--no-headers=true
헤더를 숨기려면 옵션을 사용 하십시오.- 사용
s
의 명령을sed
나타내는 처음 두 단어 페치namespace
하고pod's name
각각 그 조합delete
들을 사용하여 명령. - 마지막
delete
명령은 다음과 같습니다
kubectl --namespace kube-system delete pod heapster-eq3yw
. - 명령
e
수정자를 사용하여s
위에서 조립 한 명령을 실행하면 실제delete
작업 이 수행됩니다 .
kube-system
네임 스페이스에서 포드를 삭제하지 않으려면 명령 전에 네임 스페이스 grep -v kube-system
를 제외 하도록 추가해야합니다 .kube-system
sed
답변
당신은 단순히 실행할 수 있습니다
kubectl delete all --all --all-namespaces
-
첫 번째
all
는 공통 리소스 종류 (포드, 복제 세트, 배포 등)를 의미합니다.kubectl get all == kubectl get pods,rs,deployments, ...
-
두 번째
--all
는 선택한 종류의 모든 자원을 선택하는 수단입니다.
참고 all
포함되지 않습니다 :
- 네임 스페이스가 아닌 리소스 (예 : clusterrolebindings, clusterroles 등)
- 구성 맵
- 역할 바인딩
- 역할
- 비밀
- …
완벽하게 정리하려면
- 다른 도구 (예 : Helm, Kustomize 등)를 사용할 수 있습니다.
- 네임 스페이스를 사용할 수 있습니다.
- 리소스를 만들 때 레이블을 사용할 수 있습니다.
답변
다음은 grep으로 확장하여 이름별로 필터링 할 수있는 하나의 라이너입니다.
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
답변
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
답변
이미 생성 된 포드가있는 경우 먼저 모든 배포를 삭제하는 것이 좋습니다
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
NAMSPACE와 DEPLOYMENT를 해당하는 것으로 바꾸면 다음 명령으로 모든 배포 정보를 얻을 수 있습니다.
kubectl get deployments --all-namespaces