내 잡다한 노트

Static Pods 본문

DevOps/쿠버네티스

Static Pods

peanutwalnut 2024. 8. 10. 17:24

 

kubelet은 kube-apiserver로부터 어떤 파드를 실행해야 하는지에 대한 지시를 받아 노드에서 파드를 실행한다.

이때 kube-scheduler는 파드가 어떤 노드에 배치될지를 결정하고, 그 결과가 ETCD에 저장된다.

 

Static Pods

정의 : kubelet이 혼자서 관리할 수 있는 pod

k8s의 클러스터의 control plane 컴포넌트 없이도 kubelet이 독립적으로 관리할 수 있는 파드.

이거는 다음과 같은 상황에서 사용된다. 

kube-apiserver, kube-scheduler, ETCD 등 클러스터의 다른 컴포넌트가 없는 경우.

단독으로 노드를 운영해야 하거나, 클러스터의 control plane을 설정하기 위해 사용할 때 

 

Static pods의 작동방식

kubelet은 특정 디렉토리에서 pod 정의 파일을 읽어들여 파드를 생성한다.

이 디렉토리는 pod-manifest-path라는 옵션으로 설정할 수 있으며, kubelet이 이 디렉토리를 주기적으로 확인하여 파드 정의 파일을 읽고 파드를 생성한다. 

pod 정의 파일을 변경하면 kubelet은 해당 파드를 다시 생성하고, 파일을 삭제하면 파드도 자동으로 삭제된다. 

 

Static Pods와 쿠버네티스 클러스터의 통합

만약 노드가 클러스터의 일부로 동작하고 있다면, kubelet은 생성한 static pod의 정보를 kube-apiserver에 Mirror pod로 등록한다.

이 mirror pod는 읽기 전용이며, 편집하거나 삭제할 수 없다.

 

Static Pods의 활용

Static pods는 쿠버네티스 control plane 자체를 구성하는 데 사용될 수 있다. 

예를 들어, API서버, 컨트롤러, etcd 등을 static pods로 설정할 수 있다. 이를 통해 서비스가 충돌하거나 재시작되어도 kubelet이 자동으로 해당 서비스를 재시작한다. 

kubeadm 도구를 사용하여 클러스터를 설정할 때, 이러한 static pods가 control plane 컴포넌트로 활용된다.

 

static pods와 daemonsets의 차이

DaemonSets는 클러스터의 모든 노드에서 특정 파드가 하나씩 실행되도록 보장하는 오브젝트이다. 

이는 kube-apiserver와 Daemonset Controller에 의해 관리된다. 

반면 static pods는 kubelet이 직접 관리하며, 다른 클러스터 컴포넌트의 간섭 없이 동작한다. 

static pods와 daemonSet pods 모두 kube-scheduler의 영향을 받지 않는다.

 

 

'DevOps > 쿠버네티스' 카테고리의 다른 글

쿠버네티스[K8S] 오브젝트의 명세 설정  (0) 2024.11.06
k8s helm  (0) 2024.08.12
Multiple Scheduler  (0) 2024.08.11
Vagrant  (0) 2023.11.17
k8s 자격증 따야할 때 보면 좋을 강의  (0) 2023.11.10