IT/CKA

CKA 준비과정 - Scheduling (6) / DaemonSets, Static Pods

Primes 2023. 5. 20. 18:30
728x90

DaemonSets

DaemonSets는 각 노드가 생성될 때 같이 생성되는 기본 파드라고 이해할 수 있다.

노드가 생성되면 같이 생성되며, 삭제될 때 같이 삭제된다.

DaemonSets은 파드의 복제본을 노드에 항상 존재하도록 하는 리소스라고 볼 수 있다.

 

Monitoring 에이전트나, kube-proxy와 같이 모든 노드에 필수적으로 설치 및 설정되어야 할 요소들을 Daemonsets을 활용하면 간단하게 Scale-out/in 시 파드에 바로 적용할 수 있다.

 

데몬셋의 yaml 파일 정의 요소는 replicaset과 거의 동일하다. 이는 수행하는 역할이 비슷하기 때문인 것으로 보인다.

 

 

Static Pods

Static Pods는 kube-apiserver 에 의존하지 않고 pod-definition file을 kubelet이 직접 읽어 파드의 정보를 불러와 생성한 파드이다. 즉, kube-scheduler 를 따르지 않고 kubelet이 파일을 통해 독자적으로 생성한 파드이기 때문에, 스케줄러의 영향을 받지 않고 생성되는 파드이다.

 

kubelet은 주기적으로 지정된 서버의 디렉토리에서 pod-definition file을 읽어와 파드의 정보를 체크하고 생존을 보장하도록 동작한다. 해당 파일의 내용을 수정하면 파드 역시 수정되고, 파일을 삭제하면 파드도 삭제된다.

 

 

kubelet은 지정된 서버의 디렉토리로부터 파일을 읽어와 파드를 생성, 수정하는데 이 때 폴더를 지정하는 방법은 아래와 같다.

- kubelet.service 에서 직접 지정

--pod-manifest-path=/etc/Kubernetes/manifests

--pod-manifest-path

위 옵션을 통해 경로를 지정하면 kubelet이 해당 경로를 읽어 파드를 생성한다.

 

또는, kubeconfig.yaml 파일을 통해 정의할 때 아래 필드를 추가하여 설정할 수 있다.

staticPodPath: /etc/kubernetes/manifest/~

 

따라서 만약 static pod의 환경을 점검할 때는 위 두 사항을 모두 체크해보아야 한다.

 

※ 주의사항

Static Pod는 kube-apiserver를 통해 생성을 하지 않는 파드이기 때문에, 쿠버네티스내 파드와는 별개로 취급하여야 한다. 따라서 static pod를 조회하고 싶다면, docker 명령어를 사용하여야 한다. kubelet 명령어를 통해서는 조회할 수 없다.(kubelet은 apiserver를 통해 파드를 조회하기 때문)

$ docker ps

docker 에서 컨테이너 조회하는 명령어를 사용하면 된다.

 

 

DaemonSets 과 Static Pods 비교

둘의 공통점은 모두 Kube-Scheduler 부터 자유롭다는 것이다. 하지만 차이점으로는 static pods는 api-server와도 자유롭고, daemonsets는 api-server 에 의해 생성된다.

반응형