[CKA] ReplicaSet과 복제 컨트롤러
파드 수를 유지하는 ReplicaSet의 역할과 라벨 선택기, 스케일링 명령을 정리합니다.
컨트롤러는 클러스터 상태를 관찰하고 원하는 상태와 차이가 나면 조치합니다. ReplicaSet은 라벨 선택기와 일치하는 파드 수를 replicas에 맞춰 유지합니다. 파드가 사라지면 새 파드를 만들고, 수가 많으면 초과 파드를 줄입니다.
ReplicationController도 같은 목적을 가진 이전 방식이며, 현재는 ReplicaSet을 주로 사용합니다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx
image: nginx
spec.selector.matchLabels와 파드 템플릿의 metadata.labels는 일치해야 합니다. 선택기에 맞는 기존 파드도 ReplicaSet의 관리 대상에 포함되므로, 별도로 만든 파드의 라벨을 붙일 때는 의도치 않게 관리 대상이 되지 않는지 확인합니다.
kubectl create -f replicaset-definition.yaml
kubectl get rs
kubectl describe rs myapp-replicaset
kubectl scale --replicas=6 replicaset myapp-replicaset
kubectl delete rs myapp-replicaset
명령으로 스케일을 바꾸어도 로컬 매니페스트의 replicas 값은 자동으로 바뀌지 않습니다. 선언 파일을 계속 기준으로 삼으려면 파일도 같은 값으로 고칩니다.