쿠버네티스 파드 배포 흐름

박도준·2021년 4월 29일
0

Kubernetes & Docker

목록 보기
8/12
post-thumbnail

쿠버네티스의 특징

실제 쿠버네티스에서 파드가 배포되는 흐름을 알기 전에 쿠버네티스의 몇가지 특징을 먼저 살펴본다.

  1. 선언적 API
    쿠버네티스의 가장 큰 설계 원칙은 API가 선언적인 것이다. 선언적 API는 컨테이너가 원하는 상태를 선언하면 쿠버네티스는 계속해서 컨테이너의 상태를 확인하여 원하는 상태에 맞게 맞춘다는 것이다.

  2. MSA 아키텍쳐
    쿠버네티스는 마이크로서비스 아키텍쳐(MSA, Microservices Architecture)로 구성되어 있어 독립적인 여러 개의 서비스들로 이루어져 있다.



실제 쿠버네티스 파드 배포 흐름

실제 쿠버네티스의 파드가 배포되는 흐름은 아래와 같다.

  1. 사용자가 kubectl 명령어를 이용하여 파드 생성하는 명령어를 입력한다.
  2. 입력한 Kubectl 명령어를 통해 API 서버에 명령을 내린다. 이때 사용자는 kubectl 명령어가 아닌 API를 바로 이용할 수도 있다.
  3. API 서버etcd에 가장 먼서 정보를 동기화한다. etcdAPI 서버와 1대1로 동기화하기 때문에 만약 문제가 생기면 etcd에 있는 정보를 복원하면 된다.
  4. 컨트롤러 매니저API 서버와 통신하여 API 서버의 값을 보고 파드 생성에 필요한 레플리카셋이나 여러 컨트롤하는 값들을 설정해둔다. 그리고 API 서버에 업데이트한다. 이때 API 서버가 먼저 컨트롤러 매니저에게 파드 요청 메세지를 보내지 않고 파드가 잘 생성되었는지 감시하는 역할만 한다.
  5. 스케줄러API 서버와 통신하여 실제 파드가 워커 노드가 밸런스있게 생성될 수 있도록 스케줄링 해준다. 이때도 마찬가지로 API 서버스케줄러에게 메세지를 보내지 않고 새로운 파드가 워커 노드에 잘 들어갔느지 감시하는 역할을 한다.
  6. KubeletAPI 서버와 통신하여 파드를 생성해야 한다는 것을 알아차린다.
  7. Kubelet컨테이너 런타임에게 파드 생성 요청을 한다.
  8. 컨테이너 런타임이 파드를 생성한다.
  9. 이렇게 생성된 파드들은 사용자와 통신하기 위해 Kube-proxy 를 거친다.
  10. 사용자는 Kube-proxy를 통해 파드와 통신이 가능하게 된다.

이러한 네트워크는 사용자가 직접 선택하여 구성할 수 있는 영역이다. 이것을 컨테이너 네트워크 인터페이스라고 하고 그 중에 CALICO가 그 예시이다.


위의 동작 흐름을 살펴보면 API 서버가 모든 흐름의 중심에 있다는 것을 볼 수 있다. API 서버는 쿠버네티스 클러스터를 이루는 모든 것의 게이트웨이이고, 모든 것의 집합체이다.
=> API 서버는 매우 중요한 요소이다.

profile
Better late than never

0개의 댓글