쿠버네티스(k8s)의 기본 컴포넌트와 프로세스

JACKJACK·2022년 10월 24일
1
post-thumbnail

쿠버네티스는 컨테이너화된 어플리케이션을 쉽게 배포하고 관리해주는 플랫폼이다. 이번엔 쿠버네티스의 컴포넌트들를 정의하며 기본적인 구조 및 동작원리를 이해해보려 한다.

📝쿠버네티스 컴포넌트

  1. 쿠버네티스를 배포하면 클러스터를 얻고, 클러스터란 컨테이너화 된 어플리케이션을 실행하는 노드의 집합이며 최소 한개의 노드를 가진다.

  2. 쿠버네티스 클러스터마스터노드, 워커노드로 구성되며 마스터노드에서는 컨트롤 플레인이 실행되고, 워커노드에서는 실제 배포되는 컨테이너 어플리케이션이 실행된다.

  3. 마스터노드(컨트롤 플레인)의 구성요소와 기능

  • API서버: 구성요소 통신(쿠버네티스 API를 노출, 컨트롤 플레인의 프론트엔드)
  • 스케줄러: 어플리케이션 스케줄링(노드가 배정되지않은 파드 감지 및 실행할 노드 선택)
  • 컨트롤러 매니저: 클러스터의 전반적인 기능과 원하는 상태 유지(노드 다운 시 통지 및 대응, 레플리케이션셋에 맞게 파드 유지, 서비스와 파드 연결, API 접근 토큰 생성)
  • 클라우드 컨트롤러 매니저: 클라우드 별 로직을 포함하며 클라우드 공급자의 API에 연결(컨트롤러 매니저와 역할은 거의 동일)
  • etcd: 클러스터의 상태 분산 저장소(일관성, 고가용성 key-value 형태 저장)
  1. 워커노드의 구성요소와 기능
  • pod: 하나 이상의 컨테이너 그룹이며 쿠버네티스에의 가장 작은 배포 단위
  • Kublete: 컨트롤 플레인의 API서버와 통신 및 컨테이너 관리
  • 컨테이너 런타임: 도커와 같이 컨테이너들을 실행하는 소프트웨어
  • kube-proxy: 노드의 네트워크 규칙울 관리해 통신을 도우며 네트워크 트래픽을 로드밸런싱




📝쿠버네티스 프로세스 간단 정리

  1. 어플리케이션 실행 및 이미지 패키징

  2. 이미지 레지스트리 푸시 및 API서버에 앱 디스크립션(컨테이너 이미지, 구성요소 이미지, 구성요소간 통신방법, 동일서버에 배치되어야하는 구성요소의 정보 등) 게시

  3. 컨트롤 플레인의 API서버에서 컨테이너에 필요한 리소스 계산, 스케줄러가 사용가능한 워크노드에 컨테이너 할당

  4. 워크노드의 Kubelet에서 컨테이너 런타임에 필요한 이미지 가져와 컨테이너 실행

  5. 쿠버네티스의 컨트롤러 매니저에서 앱 배포상태가 디스크립션과 일치하는지 지속적으로 확인, 장애 발생시 자가 치유

  6. 앱이 실행되는 동안 쿠버네티스가 추가 복제본 가동, 정지를 통해 스케일링이 가능, kube-proxy가 서비스 연결이 로드밸런싱 되도록 조정




💡결론

- 쿠버네티스를 배포하면 클러스터가 생기며 클러스터는 어플리케이션을 실행시키기 위한 하나 이상의 노드를 포함한다.

- 클러스터의 노드의 종류에는 마스터노드와 워커노드가 있고 마스터노드의 컨트롤 플레인을 통해 컨테이너(프로세스)를 워커노드에 할당시켜 어플리케이션을 실행한다.

profile
러닝커브를 빠르게 높이자🎢

3개의 댓글