개발 서적 완독하기/쿠버네티스 교과서

쿠버네티스 교과서 2장 & 3장

코드 살인마 2024. 2. 5. 22:14
728x90

2장

2.1 쿠버네티스는 어떻게 컨테이너를 실행하고 관리하는가

파드

  • 쿠버네티스가 컨테이너를 실행하는 수단
  • 쿠버네티스로 관리되는 자신만의 가상 IP 주소를 가진다.
  • 파드는 쿠버네티스가 관리하는 가상 네트워크로 연결된다.
    -컨테이너를 또 다른 가상환경인 파드 로 감싼다.

컨테이너는 애플리케이션 구성 요소 하나를 실행하는 가상화 된 환경이다.

2.2 컨트롤러 객체와 함께 파드 실행하기

디플로이먼트

파드를 관리하는 컨트롤러 객체

  • 한 노드에 문제가 발생하여 파드를 유실하면, 대체 파드를 다른 노드에 생성
  • 디플로이먼트 스케일링 설정
  • 디플로이먼트만 생성해도 파드가 자동으로 생성됨
    • 쿠버네티스 API을 사용하여 현재 동작중인 리소스 확인 및 자신에게 필요한 파드 생성

디플로이먼트가 자신이 관리해야할 리소스를 어떻게 추적할까?

  • 레이블을 이용하여 리소스 간 관계 파악
    • 디플로이먼트는 레이블 셀렉터를 통해 자신이 관리하는 파드 식별

2.3 애플리케이션 매니페스트 배포 정의

매니페스트

  • YAML 스크립트 파일
  • 형상 관리 도구로도 사용가능하고, 다른 쿠버네티스 클러스터로 옮기더라도 동일한 배포 가능
  • 레이블, 리소스 스펙 , 도메인 등 다양한 기능을 정의 가능

2.4 파드에서 실행중인 애플리케이션에 접근하기

실제 애플리케이션에 접근해야하는 경우(로그 파일 등)가 생기는데, kubectl을 사용하여 접근 가능

$ kubectl exec -it {pod name}

2.5 쿠버네티스의 리소스 관리 이해하기

컨트롤러 객체(디플로이먼트)가 만든 리소스 삭제는 해당 컨트롤러의 책임

  • kubectl을 사용하면 쿠버네티스 리소스(파드)가 삭제안되는 경우 존재

컨트롤러 객체를 삭제하면, 관리되는 리소스들도 모두 삭제

3.2 파드와 파드 간 통신

클러스터 IP

  • 서비스 유형 중 가장 기본이 되는 것
  • 파드가 어느 노드에 있더라도 해당 IP 주소를 이용해 접근가능 (파드와 파드간 통신에 사용 가능)
  • 내부에서 접근 가능, 외부에서 접근 차단해야 하는 분산 시스템 컴포턴트에 적합

Yaml 파일에 서비스 이름을 접근하는 도메인 이름으로 변경

3.3 외부 트래픽을 파드로 전달하기

로드 밸런서 서비스

기존 로드밸런서와 똑같은 기능을 한다. 다른 건 로드 밸런싱 후 목적지가 서버가 아닌 파드이다.

  • 서비스 커버 범위는 클러스터 전체

이해하기로는, clusterIP는 private VIP, external IP는 Public IP로 느껴진다.

3.4 쿠버네티스 클러스터 외부로 트래픽 전달하기

익스터널네임(ExternalName) 서비스

  • 도메인 네임에 대한 별명
  • 파드 안 애플리케이션에서 로컬 네임을 사용하고, 쿠버네티스 DNS 서버에서 해당 로컬 네임에 맵핑된 외부 도메인 호출

질문

노드의 개념이 희미하긴 하다.

3.5 쿠버네티스 서비스의 해소 과정

파드 속 컨테이너가 요청한 도메인 네임 조회는 쿠버네티스 DNS 서버가 응답
파드에서 나온 모든 통신은 쿠버네티스의 또 다른 구성 요소인 네트워크 프록시가 라우팅을 담당한다. 해당 프록시는 각각 노드에서 동작하며, 모든 서비스의 엔드포인트에 대한 최신 정보 유지