Programing

모든 kubernetes 네임 스페이스의 모든 포드를 삭제하는 명령

lottogame 2020. 8. 17. 09:30
반응형

모든 kubernetes 네임 스페이스의 모든 포드를 삭제하는 명령


문서를 보면 'a'pod를 삭제하는 api 호출이 있습니다. 모든 네임 스페이스의 모든 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'

설명 :

  1. 명령 kubectl get pods --all-namespaces사용 하여 모든 네임 스페이스의 모든 포드 목록을 가져옵니다.
  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


다음은 grep으로 확장하여 이름별로 필터링 할 수있는 한 줄짜리입니다.

kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}

다시 생성 된 포드가 이미있는 경우 먼저 모든 배포를 삭제하는 것이 좋습니다.

kubectl delete -n *NAMESPACE deployment *DEPLOYMENT

NAMSPACE 및 DEPLOYMENT를 해당 항목으로 바꾸면 다음 명령으로 모든 배포 정보를 얻을 수 있습니다.

kubectl get deployments --all-namespaces

Kubectl bulk (bulk-action on krew) 플러그인이 유용 할 수 있으며 선택한 리소스에 대한 대량 작업을 제공합니다. 포드를 삭제하는 명령입니다.

 ' kubectl bulk pods -n namespace delete '

당신의 세부 사항 확인할 수 있습니다


네임 스페이스에서 모두 삭제하는 파이썬 코드를 만듭니다.

delall.py

import json,sys,os;

obj=json.load(sys.stdin);
for item in obj["items"]:
        os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")

그리고

kubectl get all -n kong -o json | python delall.py

참고 URL : https://stackoverflow.com/questions/33509194/command-to-delete-all-pods-in-all-kubernetes-namespaces

반응형