이번 글에서는 쿠버네티스의 애플리케이션 스케일링을 다룰 것이다.
레플리카셋은 파드를 관리하는 컨트롤러 리소스다.
디플로이먼트는 레플리카셋을 관리한다.
레플리카셋은 루프를 돌며 관리 중인 리소스 수와 필요한 리소스 수를 확인하기 때문에 삭제된 파드를 대체할 수 있다.
spec:
replicas: 3
replica를 늘리면 해당 개수의 파드가 생성되며, 요청을 보낼 경우 쿠버네티스가 이 파드에 요청을 고르게 분배한다.
클러스터 IP는 파드의 IP주소의 추상화 버전이며, 파드가 교체되더라도 애플리케이션은 동일한 주소를 이용하여 파드에 접근할 수 있다.
하지만 결국 레플리카셋도 디플로이먼트가 관리하기 때문에, 레플리카를 직접 생성할 필요는 없고 디플로이먼트만 생성하면 된다.
디플로이먼트는 레플리카셋을 관리한다.
레플리카셋을 생성했는데, 파드의 정의가 바뀌면, 새로운 파드를 생성하며 기존의 파드를 하나씩 줄인다.
$kubectl scale --replicas=4 deploy/{파드 이름}
이러한 명령어를 이용하여 파드 수를 조정할 수 있지만, 새로 $kubectl apply
를 통해 적용하면 이전의 설정은 파기된다.
리눅스의 백그라운드에서 단일 인스턴스로 동작하는 데몬에서 따온 이름이다.
쿠버네티스의 데몬셋은 클러스터 내 선택한 모든 노드에서 단일 레플리카 또는 파드로 동작하는 리소스이다.
노드에 실행되는 파드가 하나이다.
nodeSelector:
key:value
특정 노드에서만 파드를 실행하는 정의이다.
해당 조건을 만족하는 노드에만 파드를 생성하며, 만약 해당하는 노드가 없을경우 파드를 생성하지 않는다.