[kubernetes] 쿠버네티스 아키텍쳐

쿠버네티스 > 아키텍쳐

develop, kubernetes
written byzuhern1zuhern

in

2021. 03. 13


공부하는 책
알면 더 쉬운 도커 쿠버네티스 복습을 위해 요약한 것.

목표

kubernetes 책 3장 내용 숙지

  • 쿠버네티스 아키텍쳐

3.1 쿠버네티스 아키텍쳐

3.1.1 도커, 쿠버네티스 비교

구분 설명
도커 컨테이너와 관련된 전반적이고 추상화된 기술을 제공
쿠버네티스 다량의 컨테이너를 하나의 물리적인 서버에 배치하여 이를 사용하듯이 관리

3.1.2 쿠버네티스의 영역은 크게 두가지 영역으로 나뉨

영역 설명
컨트롤 플레인 영역 노드를 하나로 묶는 클러스터를 관리
노드영역 흩어져 있는 각 노드를 관리

kubernetes_cluster_architecture

3.1.3 컨트롤 플레인 컴포넌트 (Control plane component)

  • 클러스터에 관한 결정을 내린다.
  • 클러스터 이벤트를 감지하며 반응한다.
  • 클러스터 내 어떠한 머신에서라도 동작할 수 있다.

쿠버네티스 클러스터의 두뇌 역할을 하며 컨테이너 스케줄링, 서비스 관리, API 요청 처리등의 작업을 수행한다.
컨트롤 플레인에 해당하는 컴포넌트들은 마스터 노드에서 실행된다.

  • kube-apiserver

    • 쿠버네티스의 모든 컴포넌트의 통신을 담당
    • K8S API를 노출하는 컨트롤 플레인의 프론트엔드
    • 수평 확장 가능
  • etcd

    • 클러스터의 모든 데이터를 보관하는 일관성, 고가용성을 보장하는 키-값 저장소
    • 어떤 노드가 존재하고 클러스터에 어떤 리소스가 존재하는지와 같은 정보
  • kube-scheduler

    • 새로운 POD 생성을 감지하고, 실행시킬 워커 노드를 선택하는 역할
  • kube-controller-manager

    • 컨트롤러를 구동하는 컴포넌트
    • 디플로이먼트 같은 리소스 컨트롤러를 관리
    • API 서버를 통해 클러스터의 공유된 상태를 감지하고, 현재 상태를 원하는 상태로 이행하는 컨트롤 루프를 관리
    • 구동되는 컨트롤러로 노드 컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러, 서비스 어카운트, 토큰 컨트롤러 등이 있음
  • cloud-controller-manager

    • 바탕을 이루는 클라우드 제공 사업자와 상호작용하는 컨트롤러를 작동시킴
    • 클러우드 업체와 연동하여 로드 밸런서나 디스크 볼륨 같은 자원을 관리
    • cloud-controller-manager 바이너리는 릴리스1.6에 도입된 알파 기능

3.1.4 노드 컴포넌트 (Node component)

POD를 유지시키고 쿠버네티스 런타임 환경을 제공하는 역할을 수행한다.
노드 컴포넌트들은 모든 노드에서 실행될 수 있다.

  • kubelet

    • 각 노드에서 실행되는 에이전트
    • 컨테이너 런타임을 관리하고 상태를 모니터링
    • POD에서 컨테이너가 확실하게 동작하도록 관리
  • kube-proxy

    • 각 노드에서 실행되는 네트워크 프록시
    • Service 개념의 구현부
    • 서로 다른 노드에 있는 POD 간 통신이나 POD와 인터넷 사이의 네트워크 트래픽을 라우팅
  • container-runtime

    • 컨테이너를 시작하고, 중지
    • 대표적인 것이 Docker

쿠버네티스는 도커, containerd, CRI-O 그리고 Kubernetes CRI(컨테이너 런타임 인터페이스)와 같은 여러 컨테이너 런타임을 지원한다.