KoreanFoodie's Study

쿠버네티스 개념과 구조 간단 정리/요약 : 쿠버네티스 문서 참고! 본문

Cloud, Web

쿠버네티스 개념과 구조 간단 정리/요약 : 쿠버네티스 문서 참고!

GoldGiver 2021. 9. 20. 08:04

쿠버네티스의 구조

쿠버네티스는 애플리케이션 간에 OS를 공유해 VM을 사용하는 것보다 가볍다! 또한 추상화 레벨이 높아 리소스 관리가 효율적이다.

 

쿠버네티스가 제공하는 것

  • 서비스 디스커버리와 로드 밸런싱 : DNS이름이나 IP 주소를 이용해 컨테이너를 노출할 수 있다. 트래픽 관리를 위한 로드 밸런싱도 제공한다.
  • 스토리지 오케스트레이션 : 로컨 저장소/공용 클라우드 공급자 등이 원하는 저장소 시스텝을 자동으로 탑재할 수 있다.
  • 자동화된 롤아웃과 롤백
  • 자동화된 빈 패킹(bin packing) : 리소스 활용성 UP
  • 자동화된 복구(self-healing) : 실패한 컨테이너의 재실행/교체
  • 시크릿과 구성 관리 : 함호, OAuth 토큰/SSH 키 저장 관리

 

쿠버네티스 컴포넌트

"쿠버네티스를 배포하면 클러스터를 얻는다."

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합이다. 모든 클러스터는 최소 한 개의 워커 노드를 가진다.

워커 노드는 애플리케이션의 구성요소인 파드를 호스트한다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공된다.

 

컨트롤 플레인 컴포넌트

컨트롤 플레인 컴포넌트는 클러스터에 관한 전반적인 결정(예를 들어, 스케줄링)을 수행하고 클러스터 이벤트(예를 들어, 디플로이먼트의 replicas 필드에 대한 요구 조건이 충족되지 않을 경우 새로운 파드를 구동시키는 것)를 감지하고 반응한다.

컨트롤 플레인 컴포넌트는 클러스터 내 어떠한 머신에서든지 동작할 수 있다. 그러나 간결성을 위하여, 구성 스크립트는 보통 동일 머신 상에 모든 컨트롤 플레인 컴포넌트를 구동시키고, 사용자 컨테이너는 해당 머신 상에 동작시키지 않는다. 여러 VM에서 실행되는 컨트롤 플레인 설정의 예제를 보려면 kubeadm을 사용하여 고가용성 클러스터 만들기를 확인해본다.

  • kube-apiserver : API 서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트
  • etcd : 모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성/고가용성 키-값 저장소
  • kube-scheduler : 노드가 배정되지 않은 새로 생성된 파드를 감지, 실행할 노드를 선택
  • kube-controller-manager : 컨트롤러 프로세스를 실행. (노드, 레플리케이션, 엔드포인트, 서비스&토큰)
  • cloud-controller-manager : 클라우드변 컨트롤 로직을 포함

 

노드 컴포넌트

노드 컴포넌트는 동작 중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공하며, 모든 노드 상에서 동작한다.

  • kubelet : 클러스터의 각 노드에서 실행되는 에이전트
  • kube-proxy : 클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스의 서비스 개념의 구현부
  • 컨테이너 런타임 : 컨테이너 실행을 담당하는 소프트웨어(Docker, containerd, CRI-O, Kubernetes CRI)

 

애드온

애드온은 쿠버네티스 리소스를 이용해 클러스터 기능을 구현한다. 이들은 클러스터 단위의 기능을 제공하기 때문에 애드온에 대한 네임스페이스 리소스는 kube-system 네임스페이스에 속한다. (아래는 일부 애드온의 예시)

  • DNS : 모든 쿠버네티스 클러스터는 클러스터 DNS를 갖추어야 한다.
  • 웹 UI (대시보드)
  • 컨테이너 리소스 모니터링
  • 클러스터-레벨 로깅 : 검색/열람 인터페이스와 함께 주앙 로그 저장소에 컨테이너 로그를 저장한다.
Comments