Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

전공공부

[K8S - CKA] Static Pods 본문

Study/K8S

[K8S - CKA] Static Pods

monitor 2023. 10. 16. 22:59

1. Static Pod


kubelet은 별도의 클러스터 형태가 아니라 kubelet과 docker만 있다면 pod를 만들 수 있습니다. 그러면 kube api 서버 없이는 어떻게 동작하는지 봅시다.

 

/etc/kubernetes/manifests 에 pod.yaml 파일을 두면 이 디렉토리 하부의 파일들은 포드로 읽을 수 있습니다.

 

 

application이 내려가게 되면 자동으로 kubelet이 pod를 재생성합니다. (만일, 완전히 삭제를 하려면 /etc/kubernetes/manifests에서 삭제하면 포드가 완전히 삭제됩니다.)

 

이것이 Static Pod 입니다.

 

kubelet은 pod level만을 이해 할 수 있습니다. 그렇기 때문에 static pod를 만들 수 있습니다.

 

<Etcd에 Directory 지정이 위와 같이 되어있다.>
실제로는 config 파일로 staticPodPath를 빼기 때문에 위와 같은 형식으로 지정되어 있을 가능성이 높다.

 

Static Pod가 만들어지면 docker ps 명령어로 pod를 확인 할 수 있습니다.

 

 

그러면 pod를 만들때 kubelet을 통해서 만들수 있고 ETCD, API Server를 통해서도 만들 수 있을까?

- 결론은 만들 수 있다. kubelet은 일반적인 pod를 만들고 이런식의 static pod를 만들 수 있습니다.

 

다만, static pod로 만든 pod는 kube-apiserver로는 읽기 전용 미러로만 확인 할 수 있고 직접 만들 수는 없다. (만드려면 아까와 같이 /etc/kubernetes/manifests 여기에 pod.yaml을 직접 생성해야만 한다.)

 

미러이기 때문에 아무 조치를 할 수 없다.

위 명령어를 보면 알겠지만 staticPod로 만들어진 Pod는 모두 자기 자신이 만들어진 node의 이름이 마지막에 붙는다.

 

2. Use Case


Static Pod는 Control plain에 의존적이지 않으므로 사용한다. Control plane components(kube-apiserver, kube-controller-manager, kube-scheduler,...)로 만들 수 있기 때문이다. 

 

우선 kubelet을 마스터 노드에 설치를하고 나서 pod.yaml을 알맞게 구성해서 Docker image를 이용해서 Control plane components로 만들어둔다. 

 

3. DaemonSet vs. Static Pod


DaemonSet : 일반적으로 모니터링을 하기 위함이고 ApiServer를 이용해서 만들어지는 컴포넌트이다.

StaticPod : Control plane을 구성하는 컴포넌트를 만든다. Kubelet을 이용해서 만들어진다.

 

공통점은 둘 다 Scheduler의 영향을 받지 않는다는 점이다.