Cloud 스터디 잼 코리아 Kubernetes Intm

3주차 - 01. Kubernetes 개념

ziwookim 2022. 9. 2. 18:32

Kubernetes Concepts

  1. Kubernetes 객체 모델
    • Kubernetes가 관리하는 각 항목은 객체로 표시되며 이러한 객체의 속성과 상태를 확인하고 변경할 수 있다.
  2. 선언적 관리 원칙
    • 객체에 대해 원하는 상태를 지정(선언)하면,  'watch loop(감시 루프)'를  사용하여 Kubernetes 객체를 해당 상태로 전환하여 유지하게 된다. 

 

Two elements to Kubernetes objects

Kubernetes objects

  • (객체)는 클러스터에서 실행 중인 항목의 상태(원하는 상태 및 현재 상태)를 나타내는 영구 항목으로 정의된다.

 

Object spec (객체 스펙/사양)

  • 만들려는 각 Object(객체)에 대해 'Object spec'을 Kubernetes에 제공한다. 이 spec에서 원하는 특성을 제공하여 Object가 원하는 상태를 정의한다.

 

Object status (객체 상태)

  • Kubernetes 제어 영역에서 제공하는 Object의 '현재' 상태이다.

 

Pod

표준 Kubernetes 모듈의 기본 구성 요소로, 배포 가능한 가장 작은 Kubertes 객체(Object).

즉, Kubernetes 시스템에서 실행 중인 모든 컨테이너가 Pod이다.

  • 컨테이너가 위치한 환경을 구현하며 해당 환경은 하나 이상의 컨테이너를 수용할 수 있다.
  • Pod에 컨테이너가 두 개 이상 있는 경우, 긴밀하게 결합되어 네트워킹 및 스토리지를 포함한 리소스를 공유한다.
    • Kubernetes는 각 Pod에 고유한 IP주소를 할당한다.
    • Pod 내의 모든 컨테이너는 네트워크 네임스페이스를 공유하며 여기에는 IP주소 및 네트워크 포트가 포함된다.
    • 동일한 Pod 내의 컨테이너는 localhost 127.0.01을 통해 통신할 수 있다.
    • Pod는 컨테이너 간에 공유할 스토리지 볼륨 모음을 지정할 수도 있다.

 

예)  nginx  웹 서버 인스턴스 3개가 각각 컨테이너에서 항상 실행 중일 필요가 있다고 가정한다.

 

3개의 nginx 컨테이너가 항상 실행 해야 한다.

Object(Pod)를 선언하여 nginx 컨테이너에 이러한Object(Container)를 나타낸다.

Kubernetes가 이러한 Pod를 실행하고 유지하는 작업을 맡는다.

 

예) Kubernetes가 원하는 상태("항상 실행 중인 3개의 nginx 웹 서버 인스턴스")를 지정했다고 가정하자.

 

해당 상태를 나타내는 1개 이상의 Object를 만들고 유지하도록 Kubernetes가 지시하여 이 작업을 실행하면, Kubernetes는 원하는 상태(Object spec)를 현재 상태(Object status)와 비교한다.

3개의 nginx 컨테이너에 대한 선언이 완전히 새로운 선언이라고 가정하면, 현재 상태(Current state)가 원하는 상태(Desired state - Kubernetes objects)와 일치하지 않으므로 Kubernetes(의 제어 영역)이 상황을 해결할 것이다.

Kubernetes 제어 영역은 클러스터의 상태를 지속적으로 모니터링하여, 선언된 상태(Desired state)와 현재(Current state)를 끊임없이 비교하고 필요에 따라 상태를 수정한다.