개발자가 되고 싶은 준개발자

[도커와 쿠버네티스] 쿠버네티스 기본 본문

도커와 쿠버네티스

[도커와 쿠버네티스] 쿠버네티스 기본

준개발자 2021. 1. 10. 09:15

구조

사용자가 UI나 kubectl(커맨드라인 인터페이스)을 통해 명령을 전달하면 마스터가 노드들의 동작을 조정

쿠버네티스 구조


용어

  • 쿠버네티스 API
    • 다양한 언어(파이썬, Go...)로 API 라이브러리를 제공
    • kubectl이 마스터 노드 상의 kube-apiserver에게 YAML 또는 JSON 형식으로 목표 상태를 전송하면 이를 토대로 오브젝트 생성, 변경, 제거를 진행
  • 오브젝트
    • 쿠버네티스 클러스터 내부의 엔티티
    • 메타데이터에 기술된 이름에 의해 식별됨
      • 같은 종류의 오브젝트의 이름은 하나의 네임스페이스에서 유일해야 함
  • 네임스페이스
    • 쿠버네티스 클러스터를 논리적으로 분할하여 사용하기 위해 존재하는 기능
    • kubectl의 유효 범위를 지정한 네임스페이스로 제한 가능
  • 컨테이너
    • 컨테이너는 파드 내에서만 실행 가능
    • 실행 시에만 존재
  • 파드
    • 컨테이너의 실행 상태를 관리
      • 활성 프로브(Liveness Probe)와 준비 상태 프로브(Readiness Probe)를 설정하여 내부 애플리케이션의 상태를 감시
    • 실행 시에만 존재
      • IP 주소는 기동 시 부여되고 종료 시에 회수됨
    • 기동될 때 라벨이나 IP 주소를 포함한 자신의 오브젝트 정보를 마스터 노드의 etcd에 등록
  • 컨트롤러
    • 파드의 실행을 제어하는 오브젝트
  • 설정: 네임스페이스에 저장된 정보를 컨테이너 내의 파일이나 환경 변수를 통해 애플리케이션에 참조 가능
    • 컨피그맵(ConfigMap): 설정을 저장
    • 시크릿(Secret): 기밀 정보를 저장
  • 서비스
    • 클라이언트의 요청을 파드에 전달하는 역할
    • 파드의 IP 주소가 기동할 때마다 바뀌므로 파드에 접속해야 하는 클라이언트는 서비스가 가지는 대표 IP를 사용해서 접속
    • 대표 IP주소를 취득하여 내부 DNS에 등록한 후 대표 IP 주소로의 요청 트래픽을 지정된 파드들에 부하분산하며 전송하는 역할
      • 대표 IP 주소를 어떻게 취득?
        • 파드는 기동될때 자신의 오브젝트 정보를 마스터 노드의 etcd에 등록
        • 셀렉터의 라벨에 일치라는 파드를 etcd에 조회하여 전송할 파드의 IP 주소를 획득
      • 내부 DNS?
        • 서비스는 IP 주소와 서비스명을 쿠버네티스 클러스터의 내부 DNS에 등록
  • 스토리지
    • 파드나 컨테이너는 일시적으로만 존재하므로 중요 데이터는 전원이 꺼져도 유지되는 스토리지 시스템에 저장해야 함
    • 쿠버네티스는 스토리지를 계층적으로 추상화한 오브젝트를 제공하고 이를 외부 스토리지 시스템과 연동할 수 있도록 함

 

참조

타카라 마호 저/이동규 역, <15단계로 배우는 도커와 쿠버네티스>, 제이펍, 2020.10.12.

itwiki.kr/w/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4