티스토리 뷰

IaC/Kubernetes

[Kubernetes] Init Container, Static Container

나미의 로그포스 2023. 4. 7. 17:19

1. Init Container

 

Application 컨테이너 실행 전 미리 동작 시킬 컨테이너로, 본 컨테이너 실행 전 사전 작업이 필요한 경우 사용합니다.

 

Init Container의 개념

 

그림과 같이 application을 실행하기 위해 DB - login 등으로 여러 작업이 선행되어야 하는 상황이라고 생각하면 됩니다.

이 때 필요한 컨테이너의 개수는 3개로, 우측 상단처럼 3/3으로 표시됩니다.(3/3으로 전부 잘 올라와야 application 정상 실행)

 

 


2. Static Container

 

이제까지는 생성한 pod들을 특정 worknode에 할당할 수 없었고, master node에 의해 자동으로 고르게 분배되어 올라갔습니다.

그러나 Static 컨테이너를 통해 특정 node에서만 실행하도록 pod를 지정해줄 수도 있습니다.

 

Static 컨테이너는 master node의 API 서버 없이 특정 노드에 있는 kubelet 데몬에 의해 직접 관리되는 컨테이너입니다.

 

Static container = master가 아니라 kubelet이라는 데몬에 의해 만들어지는 컨테이너

 

각 worknode의 /var/lib/kubelet/config.yaml 경로 파일을 열면 "staticPodPath"를 확인할 수 있습니다.

 

 

/var/lib/kubelet/config.yaml

 

config.yaml 파일에서 /etc/kubernetes/manifests 가 staticPodPath로 설정된 것을 알 수 있습니다.

 

staticPodPath로 설정된 해당 경로에 yaml 파일을 추가하면 바로 컨테이너가 생성되며, 이렇게 생성된 staticpod는 master에서 kubectl delete pods --all 로 지워도 사라지지 않습니다. (Pending → 다시 Running 상태로 무한 재생성)

 

완전히 생성한 static pod를 삭제하려면 다시 위의 경로(/etc/kubenetes/manifests)로 돌아가 yaml 파일을 삭제해주면 됩니다.

 

 

worknode 뿐만 아니라 masternode의 path에도 yaml 파일을 생성하면 마찬가지로 노드 생성이 가능합니다.

 

master의 /etc/kubernetes/manifests

 

masternode의 staticPodPath 경로에는 기본적으로 위와 같은 yaml 파일들이 저장되어 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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 31
글 보관함