노드의 kubelet 데몬에 의해 직접 관리되는 Pod으로, yaml 파일을 통해 생성/수정/삭제한다.

1 minute read

노드의 kubelet 데몬에 의해 직접 관리되는 Pod으로, yaml 파일을 통해 생성/수정/삭제한다.

Static Pod의 생성

일반 Pod을 생성하는 것과 동일한 Pod yaml 파일을 사용한다. 다른 점은 kubectl이 아니라 Pod yaml 파일을 /etc/kubernetes/manifests/ 디렉토리 아래에 위치 시킨다는 것이다.

마스터 노드의 컴포넌트와 Static Pod

Static Pod으로 Pod을 띄우면, kubectl로 해당 Pod을 삭제할 수 없다. 이런 점 때문에 클러스터의 핵심인 controlplane의 컴포넌트들: apiserver, controller-manager, etcd 등을 Static Pod으로 생성하고 관리한다.

미러 파드(mirror pod)

Static Pod은 api-server가 아니라 kubelet 데몬이 관리하는 것이다. 그러나 kubelet get pods를 통해서 etcd Pod 등 Static Pod들을 확인할 수 있다. 이것은 kubelet 데몬이 api-server에 Static Pod에 대한 미러 파드(mirror pod) 생성을 요청하기 때문이다. 즉, 우리가 kubelet get pods를 통해 보는 etcd Pod은 Static Pod의 본체가 아니라 분신인 셈이다!

그래서 kubelet delete pod ...을 하더라도 미러 파드가 잠시 내려갈 뿐, 본체인 Static Pod은 내려가지 않는다!

What if no controlplane?

만약 kube-api-server와 master node가 없다고 생각해보자. 개별 노드가 Pod을 생성할 수 있을까? 방법은 Static Pod을 사용하는 것이다!

노드의 /etc/kubernetes/manifests/ 경로에 Pod yaml 파일을 생성하면, 노드의 kubelet 데몬이 파일을 확인하고, 해당 Pod을 생성할 것이다.

즉, controlplane이 없어도 개별 노드에서 Pod을 생성/수정/삭제 할 수 있는 것이다. 그러나 컨트롤 리소스인 ReplicaSet, Deployment, Daemonset과 네트워크 리소스인 Service는 생성하지 못한다.