ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kubernetes components
    Etc 2023. 11. 12. 16:05

    https://kubernetes.io/images/docs/components-of-kubernetes.svg
    https://kubernetes.io/images/docs/kubernetes-cluster-architecture.svg

    쿠버네티스는 컨테이너를 파드 내에 배치하고 노드에서 실행함으로서 워크로드를 구동한다.

     

    Node

    클러스터 내 설치되는 가상 혹은 물리 머신을 의미.

    과거에는 미니언즈라는 용어로 불렀다. 용어는 현재도 혼용해서 사용한다.

    어플리케이션이 실행중이다가 노드가 죽을 수도 있으니, 일반적으로 클러스터에는 여러 개의 노드를 둔다.

     


    Cluster

    노드(워커 머신)의 집합.

    모든 클러스터는 최소 한 개 이상의 워커 노드를 가진다.

    클러스터 외부에서 관점에서는 하나의 노드가 죽어도 다른 노드로 접근 가능하기 때문에, 부하 분산 및 고가용성을 보장한다.

     

    고가용성을 보장하기 위해서는 쿠버네티스 자체적으로 다음의 일을 지속적으로 수행해야 한다.

    모든 클러스터를 관리하고, 관리중인 자원의 정보를 저장하고, 노드를 모니터링 하고, 상태를 감지해서 다른 노드로 트래픽을 옮기는 작업이다.

    이걸 수행하는 컴포넌트를 마스터 노드라고 하고, 그 외의 노드는 모두 워커 노드라고 칭한다.

     

    마스터 노드는 쿠버네티스 자체에 내장되있는 하나의 노드이며, 워커 노드들 사이에서 실제 컨테이너 오케스트레이션을 관장한다.


    쿠버네티스를 설치하면 실제로 아래의 것들도 함께 설치된다.

     

    Control Plain Component

    kube-apiserver

    쿠버네티스 API를 외부에 노출하는 컴포넌트.

    유저, 매니징 디바이스, CLI를 포함한 외부에서 내부 클러스터로 접근하기 위해 거치는 프론트 엔드다.


    etcd

    distributed, reliable key value store

    쿠버네티스가 클러스터를 관리하는 데 필요한 모든 데이터를 저장하는 곳.

    여러 클러스터에서 마스터와 여러 워커 노드를 각각의 방식으로 구동중이라면, etcd는 락을 이용해서 각각의 마스터가 컨플릭트가 발생하지 않게끔 관리한다.

     

    kube-scheduler

    (노드가 배정되지 않은) 새로 생성된 파드를 감지하고, 실행할 노드를 선택하는 스케줄러.

    스케줄링 고려 요소에는 리소스에 대한 요구사항, affinity & anti-affinity, 데이터 지역성 등을 포함한다.

     

    kube-controller-manager

    노드, 잡, 엔드포인트, 서비스어카운트 컨트롤러로 구성되어 있다.

    이들 모두 분리된 프로세스지만, 복잡성을 낮추기 위해 단일 바이너리로 컴파일 되고 단일 프로세스 내에서 실행한다.

    간략한 역할로는 노드/컨테이너가 다운되었을 때 이를 감지하고 대응하거나, 새로운 컨테이너를 생성하기 위한 결정을 내린다.

     

    Node Component

    실행중인 파드를 유지하고, 쿠버네티스 런타임 환경을 제공하며 모든 노드 상에서 동작한다.


    kubelet

    클러스터의 각 노드 내에서 실행되는 에이전트. 파드 내의 컨테이너들이 기대하는 대로 돌아가도록 관리한다.


    container runtime

    컨테이너를 실행하는 데 사용되는 기본 소프트웨어

    도커를 많이 사용하지만, 정식 CRI 구현체는 아니다. containerd, CRI-O가 이에 속한다.

     

    참고

Designed by Tistory.