본문 바로가기

DevOps/쿠버네티스(Kubernetes)

파드의 생명주기

쿠버네티스의 가장 큰 장점은 쿠버네티스의 구성 요소마다 하는 일이 명확하게 구분돼 각자의 역할만 충실하게 수행하면 클러스터 시스템이 안정적으로 운영된다는 점이다. 이렇게 각자의 역할이 명확하게 나뉘어진 것은 마이크로서비스 아키텍처 (MSA) 구조와도 밀접하게 연관된다. 또한 역할이 나누어져 있어 문제가 발생했을 때 어느 부분에서 문제가 발생했는지 디버깅하기 쉽다.

# 파드의 생명 주기

생명주기는 파드가 생성, 수정, 삭제되는 과정을 나타낸다.

 

1. kubectl을 통해 API서버에 파드 생성을 요청한다.

2. (업데이트가 있을 때마다 매번) API 서버에 전달된 내용이 있으면 API 서버는 etcd에 전달된 내용이 있으면 
   API서버는 etcd에 전달된 내용을 모두 기록해 클러스터의 상태 값을 최신으로 유지한다.따라서 각 요소가 상태를
   업데이트 할 때마다 모두 API 서버를 통해 etcd에 기록한다.

3. API 서버에 파드 생성이 요청된 것을 컨트롤러 매니저가 인지하면, 컨트롤러 매니저는 파드를 생성하고 이 상태를 
   API 서버에 전달한다. 참고로 아직 어떤 워커노드에 파드를 적용할지는 적용되지 않은 상태로 파드만 생성된다.

4. API서버에 파드가 생성됐다는 정보를 스케줄러가 인지한다. 스케줄러는 생성된 파드를 어떤 워커노드에 적용할지 
   조건을 고려해 결정하고 해당 워커노드에 파드를 띄우도록 결정한다.

5. API 서버에 전달된 정보대로 지정한 워커노드에 파드가 속해있는지 스케줄러가 kubelet으로 확인한다.

6. kubelet에서 컨테이너 런타임으로 파드 생성을 요청한다.

7. 파드가 생성된다.

8. 파드가 사용 가능한 상태가 된다.

 

쿠버네티스는 작업을 순서대로 진행하는 워크플로(workflow 작업절차) 구조가 아니라 선언적인 시스템 구조를 가지고 있다. 즉, 각 요소가 추구하는 상태를 선언하면 현재상태와 맞는지 점검하고 그것에 맞추려고 노력하는 구조로 되어있다.

 

 

 

 

출처:

"컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 - 조훈,심근우,문성주 지음/길벗출판사" 책을 기반으로 실습한 내용입니다.