Kubernetes Controller
쿠버네티스 개체를 모니터링하고, 적절하게 응답한다.
Replication Controller
애플리케이션의 고가용성을 보장하기 위해 지정된 수의 포드를 클러스터 내에 실행할 수 있도록 한다.
단일 포드를 사용하더라도 기존 포드에 장애가 발생하는 경우 새 포드를 자동으로 동작시키기 위해 사용할 수 있다.
애플리케이션의 사용자가 증가하는 경우 부하를 공유할 여러 포드를 생성할 수 있다.
클러스터 내 여러 노드에 걸쳐 있다.
ReplicaSet에 의해 대체된 기술이다.
생성 방법
정의 파일을 생성한 뒤 kubectl create 명령어로 생성한다.
apiVersion: v1
kind: ReplicationController
metadata:
name: myapp-rc
labels:
app: myapp
type: front-end
spec:
template:
# pod 정의 파일의 메타데이터부분부터 옮기면 됨
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
container:
- name: nginx-container
image: nginx
# 복제본 수
replicas: 3
spec 부분은 생성 개체 내의 항목을 정의하며, Replication Controller가 Replication 생성에 사용할 포드 템플릿은 포드 정의 파일과 유사하게 작성한다.
명령어
kubectl create -f rc-defintion.yml
# 생성한 복제 컨트롤러 확인
kubectl get replicationcontroller
kubectl get pods
ReplicaSet
정의 파일을 생성한 뒤 kubectl create 명령어로 생성한다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
type: front-end
spec:
template:
# pod 정의 파일의 메타데이터부분부터 옮기면 됨
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
container:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
tier: front-end
selector는 Replication Controller와의 차이점으로, ReplicaSet가 모니터링할 포드를 식별하는데 필요하다.
명령어
# 생성
kubectl create -f rs-definition.yaml
# 조회
kubectl get replicaset
kubectl get pods
# 삭제
kubectl delete replicaset myapp-replicaset
스케일 업/다운 방법
1. yaml 파일 수정 후 replace 명령어 실행
kubectl replcae -f rs-definition.yaml
2. scale 명령어 실행
kubectl scale --replicas=6 -f rs-definition.yaml
파일 지정 시 파일 내용이 자동으로 갱신되는 것은 아니다.