[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'

설명합니다 :

  1. kubectl get pods --all-namespaces모든 네임 스페이스의 모든 포드 목록을 가져 오려면 command 를 사용하십시오 .
  2. --no-headers=true헤더를 숨기려면 옵션을 사용 하십시오.
  3. 사용 s의 명령을 sed나타내는 처음 두 단어 페치 namespace하고 pod's name각각 그 조합 delete들을 사용하여 명령.
  4. 마지막 delete명령은 다음과 같습니다
    kubectl --namespace kube-system delete pod heapster-eq3yw.
  5. 명령 e수정자를 사용하여 s위에서 조립 한 명령을 실행하면 실제 delete작업 이 수행됩니다 .

kube-system네임 스페이스에서 포드를 삭제하지 않으려면 명령 전에 네임 스페이스 grep -v kube-system를 제외 하도록 추가해야합니다 .kube-systemsed


답변

당신은 단순히 실행할 수 있습니다

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