심심한 개발자의 취미생활

Scailing, Replica

애플리케이션 스케일링의 기본 아이디어는 파드를 늘리는 것이다. 쿠버네티스를 이용하여 컴퓨팅 계층에서 네트워크와 스토리지 계층을 추상화시켰다. 이제 동일한 애플리케이션이 돌아가는 여러 개의 파드를 똑같은 방식으로 추상화할 수 있다. 쿠버네티스에서는 이렇게 동일한 애플리케이션이 돌아가는 파드를 레플리카라고 한다. 노드가 여러개인 클러스터에서 레플리카는 여러 노드에 분산 배치된다. 이런 방법으로 더 많은 요청을 처리하고 일부가 고장을 일으키더라도 나머지가 그대로 동작하여 높은 사용성을 확보하는 스케일링의 이점을 누릴 수 있다.

쿠버네티스는 어떻게 애플리케이션을 스케일링하는가

  • 파드는 쿠버네티스에서 컴퓨팅의 단위다. 사람이 직접 파드를 실행하는 경우는 드물고, 주로 파드를 관리하는 다른 리소스를 정의하여 사용한다. 이런 리소스를 컨트롤러라고 하고, 그중 디플로이먼트를 주로 사용한다.
  • 컨트롤러 리소스 정의는 파드의 템플릿을 포함한다. 컨트롤러 리소스는 파드를 생성하고 대체하는 데 이 템플릿을 사용하고 템플릿으로 똑같은 파드의 레플리카를 여러 개 만들 수도 있다.
  • 디플로이먼트는 직접 파드를 관리하지 않는다. 파드를 직접 관리하는 역할은 레플리카셋이 수행한다.

디플로이먼트와 레플리카셋을 이용한 부하 스케일링

  • 애플리케이션을 정의하는 수단으로는 디플로이먼트를 우선적으로 선택해야 한다. 디플로이먼트는 이 레플리카셋 위에 유용한 관리 계층을 추가한다.
  • 디플로이먼트는 레플리카셋을 관리하는 컨트롤러 리소스다. 디플로이먼트에 스케일링을 적용하려면 레플리카셋과 마찬가지로 디플로이먼트 정의에 replicas 필드가 있어야 한다.

데몬셋을 이용한 스케일링으로 고가용성 확보하기

  • 쿠버네티스의 데몬셋은 클러스터 내 모든 노드 또는 셀렉터와 일치하는 일부 노드에서 단일 레플리카 또는 파드로 동작하는 리소스를 의미한다.
  • 데몬셋은 각 노드에서 정보를 수집하여 중앙의 수집 모듈에 전달하거나 하는 인프라 수준의 관심사와 관련된 목적으로 많이 쓰인다.

쿠버네티스의 객체간 오너쉽

  • 컨트롤러 리소스는 레이블 셀렉터를 통해 자신의 관리 대상 리소스를 결정한다. 그리고 관리 대상 리소스는 메타데이터 필드에 자신을 관리하는 리소스 정보를 기록한다.
  • 컨트롤러 리소스를 삭제하면 관리 대상 리소스가 잠시 남아 있지만, 곧 함께 삭제 된다. 쿠버네티스에는 관리 주체가 사라진 객체를 찾아 제거하는 가비지 컬렉터가 있다.
  • 객체 간 이런 오너십은 일종의 위계를 형성한다.
    • 파드는 레플리카셋의 관리를 받고, 레플리카셋은 다시 디플로이먼트의 관리를 받는 식이다.