• toc {:toc}

Kubernetes Objects

  • Objects : Pods, ReplicationController, DeploymentController, Volumes, StatefulSets…

  • 쿠버네티스의 Objects는 객체 지향 프로그래밍에서 Objects를 표현한 것과 상당히 유사하다.

    • 팟 클래스를 팟 객체로 띄우거나 ReplicaSet Controller 또한 클래스로 지정해 객체를 생성해 사용하는 것과 유사하기 때문이다.
    • 클래스에 해당하는 것이 kind 혹은 resource type이라 말한다. 이를 실행시킨 것을 객체라고 한다.
  • 쿠버네티스는 주로 RESTful 용어를 통해서 API 개념을 표현을 사용한다.

    • 쿠버네티스에게 RESTful API를 통해서 요청하고 응답을 받는다.
  • 리소스 타입 : URL에서 사용되는 이름(pods, namespaces, services)

  • 리소스 타입의 하나의 인스턴스 리소스 혹은 객체

  • 모든 리소스 타입들은 kind라 부르는 구체적인 표현을 갖는다.

  • 리소스 인스턴스들의 모음을 collection이라 한다.

  • 몇몇 리소스 타임들을 위해 API는 리소스 아래 URI 경로들로 표현되는 하나 혹은 더 많은 하위 자원들을 포함한다.

  • Object configuration

    • Spec (e.g. yaml 파일 전달)
      • 객체에 대한 desired state를 묘사한다.
      • 객체가 갖기를 원하는 특징을 말한다.
    • Status (e.g. get 명령)
      • 객체의 actual state를 묘사한다.
      • 쿠버네티스 시스템에 의해 공급되고 업데이트된 상태이다.
      • 쿠버네티스 컨트롤 계획이 동적으로 객체의 actual state가 desired state와 일치하도록 관리한다.

REF: Resource in RESTful

  • 리소스는 타입과 관련된 데이터, 다른 리소스들과의 관계, 작동하는 일련의 방법을 지닌 객체이다.
  • 이것은 객체 지향 프로그래밍의 객체 인스턴스와 유사한다.
  • 하지만 객체 인스턴스는 많은 방식을 갖지만 리소스에 대해 정의된 표준 방식은 몇 없다.
  • 객체 인스턴스는 많은 메소드를 갖지만, 그에 반해 리소스는 몇 가지 표준 메소드만 정의되어 있다.

Record of Intent

  • 객체를 생성함으로써 쿠버네티스 시스템에 클러스터의 desired state, 의도를 밝히는 것과 같다.
  • 모든 객체들은 공통의 메타데이터를 갖는다.
  • 하나의 객체는 클라이언트들이 만들거나 업데이트하거나 삭제하거나 가져오는 특정 행동을 수행할 수 있도록 하는 여러 리소스들을 가질 수 있다.

Kubernetes API

  • 쿠버네티스의 작동 API로 구성해서 사용한다.
  • Client API : 클라이언트가 원하는 객체의 생성, 수정, 삭제 등의 동작을 특정 명령을 통해 동작시킬 수 있도록 한다.
    • 내가 원하는 동작을 위해 객체를 생성하고 작동을 시키는 코드를 직접 짜는 것이 아닌, 이미 짜여진 코드를 API 호출을 통해서 동작시킬 수 있다는 점에서 편리하다.
    • 내가 작성한 프로그램에서 쿠버네티스 API를 사용할 수 있다.

Images and Registries

Image

  • 도커의 이미지와 동일하다.

  • 이미지를 쿠버네티스 팟에 사용하기 전에 레지스트리에 push할 필요가 있다.

  • 컨테이너의 이미지 속성은 개인 레지스트리와 태그를 포함한 도커 커멘드와 같은 문법을 지원한다.

  • imagePullPolicy

    • IfNotPresent : 이미지가 Local, 해당 노드에 있지 않다면, 이미지를 pull하여 실행한다.
    • Always : 이미지를 팟이 시작되는 때에 항상 pull한다. (수시로 업데이트가 되고 최신 이미지를 사용하고 싶은 경우)
    • Never : Remote의 레지스트리를 사용하지 않고 Local에 있는 것만 사용한다.(보안 상의 경우)
  • 왜 latest 태그를 피해야 하는가?

    • 이미지의 어떤 버전이 실행 중 인지를 파악하기 어렵다.
    • 적절하게 롤백하기 어렵다.