쿠버네티스

이경민·2026년 1월 12일

한화시스템 Beyond SW

목록 보기
48/52

쿠버네티스 (k8s)

자동화된 컨테이너 배포, 스케일링, 관리를 제공하는 오픈소스 플랫폼
컨테이너 오케스트레이션 도구의 일종(오케스트라 지휘자처럼 컨테이너 생성/관리를 지휘)

yml 파일에 정의한 설정대로 컨테이너를 생성하거나 삭제하면서 바람직한 상태를 유지하는 기능이 있음
문제가 되는 컨테이너를 삭제하고 새로운 컨테이너를 만들거나 컨테이너가 삭제 되면 다시 설정대로 생성하는 등 정해진 상태를 유지해 낸다.
기본적으로 사람이 개입해서 컨테이너를 삭제하기 보다는 삭제 명령이 아니라 yml 파일(매니페스트)에서 바람직한 상태를 수정해야 한다.

※ 도커 컴포즈
옵션을 지정해 수동으로 컨테이너의 수를 바꿔야 함

쿠버네티스의 클러스터

클러스터(Cluster) : 컨테이너 형태의 애플리케이션을 호스팅하는 물리/가상 환경의 노드들로 이루어진 집합

  • 마스터 노드 : 클러스터 내부 요소들을 관리(제어)
  • 워커 노드 : 컨테이너화된 애플리케이션을 실행
    클러스터는 사람이 개입하지 않아도 마스터 노드에 설정된 내용에 따라 워커 노드가 관리 되며 자율적으로 동작
    관리자는 마스터 노드의 초기 설정 후 가끔 조정만 하면 되며, 직접 워커 노드를 관리하지 않는다.

마스터 노드(컨트롤 플레인 역할)

  • 컨테이너의 라이프사이클을 정의하고, 배포, 관리하기 위한 쿠버네티스의 컴포넌트
  • 마스터 노드에는 컨테이너 등의 상태를 관리하기 위해 etcd라는 키-값 타입의 데이터 베이스가 설치된다.
  • 마스터 노드를 설정하는 관리자 컴퓨터에는 kubectl이 설치되어야 마스터 노드에 로그인하고 설정을 관리할 수 있다.
  • 마스터 노드는 컨테이너를 실행하지 않는다.
  • 마스터 노드 구성
kube-apiserver사용자와 컨트롤 플레인과 통신하는 쿠버네티스 API
etcd모든 클러스터 데이터를 담아 정보 전반을 관리하는 키-값 타입의 데이터 베이스이다.
kube-scheduler파드를 워커 노드에 할당한다.
kube-controller-manager컨트롤러를 통합 관리하고 실행한다.
cloud-controller-manager클라우드 서비스와 연동해 서비스를 생성한다.

워커 노드

  • 모든 클러스터는 최소 한 개의 워커 노드를 가진다.
  • 워커 노드는 컨테이너가 실제 동작하는 서버이므로 도커 엔진 같은 컨테이너 엔진이 필요하다.
  • 워커 노드는 구성 요소인 파드를 호스트한다.
  • 워커 노드 구성
kube-let클러스터의 각 노드에서 실행되는 에이전트로 마스터 노드의 kube-scheduler와 연동해 파드를 배치하고 확실하게 실행 되도록 관리한다.(쿠버네티스를 통해 생성되지 않은 컨테이너는 관리하지 않는다.)
kube-proxy각 노드에서 실행되는 네트워크 프록시로 쿠버네티스의 서비스 개념의 구현부이다. 네트워크 통신의 라우팅을 담당한다.(트래픽이 실제로 전달되어야 하는 파드 내의 포트를 지정, 서비스가 받은 트래픽을 파드의 어떤 포트로 전달할지 결정)


파드(Pod)

쿠버네티스에서 컨테이너를 관리하는 단위
컨테이너와 볼륨을 함께 묶은 것
기본적으로는 파드 하나가 컨테이너 하나이지만 컨테이너가 여러 개인 파드도 있을 수 있다.

디플로이먼트와 레플리카셋

디플로이먼트 : 파드와 레플리카셋에 대한 선언적 업데이트 제공. 파드와 레플리카셋에 대한 의도하는 상태를 설정하고 파드의 디플로이(배포)를 관리하는 요소임을 뜻함.
레플리카셋 : 레플리카의 수(또는 파드의 수)를 관리함. 레플리카셋이 관리하는 동일한 구성의 파드를 레플리카라고함.
디플로이먼트는 레플리카셋을 제어, 레플리카셋이 하위 파드들을 관리
레플리카셋만 단독으로 다루지 않고 주로 디플로이먼트로 레플리카셋에 대한 정의를 함께함.

⭐서비스

각 서비스는 고정된 IP(Cluster IP)를 부여 받아 외부에서는 이 IP 주소로 접근하며 이 때 서비스가 적절한 파드들로 분배함. 즉 로드 밸런서의 역할을 함.

리소스 이름내용
파드컨테이너와 볼륨을 합한 것
서비스파드에 요청을 배분
디플로이먼트파드의 배포를 관리
레플리카세트파드의 수를 관리

매니페스트

파드나 서비스에 대한 설정을 작성한 파일 yaml또는 json 형식 (보통 yaml)
매니페스트 파일은 파드, 서비스, 디플로이먼트, 레플리카셋과 같은 리소스 단위로 작성한다. 디플로이먼트를 작성하면 레플리카셋과 파드도 함께 설정되게 된다.
(파드나 레플리카셋만 따로 작성하는 것은 쿠버네티스의 기능(바람직한 상태(지정한 개수의 파드를 자동으로 유지))을 온전히 사용하기 힘들어 사용되거나 권장되지 않는다.)

0개의 댓글