관리 메뉴

피터의 개발이야기

[kubernetes] daemonset을 중지시키는 방법, how to scale kubernetes daemonset to 0 본문

Kubernetes/트러블슈팅&장애대응

[kubernetes] daemonset을 중지시키는 방법, how to scale kubernetes daemonset to 0

기록하는 백앤드개발자 2023. 2. 14. 11:56
반응형

ㅁ 개요

 ㅇ 로컬 쿠버네티스 환경에서 테스트 하였던 daemonset을 정지시키는 방법을 정리하였다.

 

 

ㅁ 중지방법(삭제)

가장 간단한 방법으로 daemonset을 삭제처리하면 된다.

$ kubectl delete daemonsets.apps -n elastic fluentd
daemonset.apps "fluentd" deleted

 

 

 하지만 다시 사용하려면 daemonset을 다시 생성해 줘야하는 문제점이 있다. 그래서 별도로 생성 yaml의 관리가 필요하다. 

$ kubectl apply -f fluentd.yaml
serviceaccount/fluentd unchanged
clusterrole.rbac.authorization.k8s.io/fluentd unchanged
clusterrolebinding.rbac.authorization.k8s.io/fluentd unchanged
daemonset.apps/fluentd created

 

 

ㅁ 중지방법(nodeSelector)

 레이블 셀렉터를 사용하여 특정한노드 집합에서만 동작하거나 특정한 노드 집합에서 동작하는 것을 선호하도록 파드를 제한할 수 있다.

자세한 것은 이곳 참조: 노드에 파드 할당하기

 

 ㅇ 노드에서 제거하기

$ kubectl -n elastic patch daemonsets.apps fluentd -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'
daemonset.apps/fluentd patched

# spec putty
{
  "spec": {
    "template": {
      "spec": {
        "nodeSelector": {
          "non-existing": "true"
        }
      }
    }
  }
}

 non-existing 이라는 라벨이 존재하는 노드에 스케줄 설정하면 결국 아무 노드에도 데몬을 할당하지 않게 된다.

 

ㅇ 노드에 다시 생성하기

$ kubectl -n elastic patch daemonsets.apps fluentd  --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]'
daemonset.apps/fluentd patched

 설정하였던 nodeSelector를 제거하였다.

 

 

ㅁ 함께 보면 좋은 사이트

 

how to scale kubernetes daemonset to 0?

When the pod controlled by daemonset,Some error occur in the pod and it's state will be CrashLoopBackOff, I want to delete these pods but not delete the DaemonSet. So I want to scale daemonset to ...

stackoverflow.com

 

노드에 파드 할당하기

특정한 노드(들) 집합에서만 동작하거나 특정한 노드 집합에서 동작하는 것을 선호하도록 파드를 제한할 수 있다. 이를 수행하는 방법에는 여러 가지가 있으며 권장되는 접근 방식은 모두 레이

kubernetes.io

 

반응형
Comments