alt
Home 쿠버네티스 아키텍처
Post
Cancel

쿠버네티스 아키텍처


쿠버네티스란?

: (k8s, kube, …) 컨테이너된 애플리케이션을 자동으로 배포, 스케일링, 관리

  • 컨테이너를 쉽게 관리하기 위해 논리적으로 그룹화(노드 or 파드 or service 등으로 추상화)


아키텍처


쿠버의 특징: Desired state

: Observe 상태 체크 -> Diff 발견 -> Act 조치 매커니즘

  • 사실상 쿠버네티스의 근간을 이루는 시스템이다.
  • 장점: 관리가 용이하다.
  • 단점: 실시간 적용이 어렵다(느리다). -> 파드 띄우면 완전히 뜨는데 시간이 꽤 걸린다.


마스터

: 체크하고, 실행하는 역할

  • 스케줄러: 어떤 노드에 배포할지 스케줄링
    • 노드에 라벨을 부여
  • 컨트롤러: 끊임없이 상태 체크하기 위한 컨트롤러
    • 파드 or 네트워크 or 노드 등 무엇이든 체크한다.
    • 실제로는 단일 프로세스로, 하나만을 체크하고 대신 각각 여러개를 띄운다.
  • API server
    • 가운데에서 상태를 바꾸거나 조회. 따라서 모든 스케줄러, 컨트롤러, etcd는 API server를 통해야한다.
    • 요청 많다 -> scale out 가능
  • etcd
    • 모든 상태 저장, 데이터를 저장.
    • 분산 시스템으로 구성해 HA
    • 데이터가 중요하기 때문에 보통 백업한다.


노드

: 위의 마스터와 마찬가지로 모든 노드는 API server를 바라본다. 여러 노드가 존재할 수 있다.

  • proxy
    • 요청을 직접 보내지는 않는다.
    • 커널레벨의 iptables 같은 것으로 주고받도록 하고, Proxy는 그 설정만을 들고있도록 한다.
  • kubelet (POD와 1:1 map)
    • 컨테이너를 사용하도록 컨테이너를 직접쓰는게 아니라 Pod으로 감싼다.
    • 각 node마다 떠있어야 한다


pod(파드)

  • 가장 작은 컨테이너 배포 단위
  • 하나 이상의 컨테이너 존재: 메인 하나이거나 메인 컨테이너 + 사이드카 컨테이너로 구성
    • e.g. 메인 + 로깅서버
  • 내부에서는 IP, 볼륨을 공유 가능
  • 언제든 업데이트 될 수도, 죽을 수도 있다.
  • 컨테이너 오케스트레이션 특성상, 상태를 유지하려는 특성으로 자동으로 다시 뜬다.
  • HPA: Horizontal Pod Autoscaler. Pod 스케일링


Node vs Pod?

: 노드는 사실상 Host. 물리 PC or 인스턴스라고 보면 된다.

  • 하나의 노드에는 여러 Pod가 존재 할 수 있다.


Helm?

  • package manager(e.g npm)
  • Chart - 헬름 패키지
  • Repository - 패키지 저장소. 차트 공유
  • Release - 인스턴스
  • template - 변수 input



Reference)

Youtube 44BITS [초보를 위한 쿠버네티스 안내서] - https://youtu.be/SNA1sSNlmy0

This post is licensed under CC BY 4.0 by the author.

DB 접근 통제와 작업 요청

쿠버네티스를 사용하는 이유