레플리케이션 컨트롤러의 역할
1. 장애 극복
Replication contorller 는 단일 POD를 복제해 여러개의 인스턴스로 실행시킨다. 이런 특징 덕분에 어플리케이션의 장애가 발생하더라도, 복제된 인스턴스를 통해 요청을 처리할 수 있다.
2. 로드벨런서
Replication controller 는 단일 클러스터 내의 여러 노드에 걸쳐져 있다. 어플리케이션을 사용하는 유저의 수가 급증할때, 트래픽을 분산해주는 역할을 하며 해당 노드의 자원이 고갈 직전이라면, 다른 노드에 포드 배포함으로 트래픽을 효율적이게 분산해준다.
다른점: 레플리카 컨트롤러(Replica Controller) vs 레플리카세트(Replica Set)
* 쿠버네티스에서는 Replica Set 의 사용을 권장하고 있다. (Replica Controller 예전 방식)
1. Replica Controller 생성 방법(권장하지않음)
#replica-controller-definition.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myapp-rc
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
template: 레플리카 컨트롤러에게 어떤 POD 를 기준으로 생성하라고 선언해주어야한다. 포드를 선언할때 사용했던 yaml 파일의 내용을 재사용할 수 있다. POD의정보(metadata ~ spec) 가 레플리카의 spec 아래에 위치한다.
replicas: 단일 포드의 정보를 몇개 복제할지 작성한다.
* template 과 replicas 는 레플리카컨트롤러 spec 의 자식임으로 같은 level 에 선언되어야한다.(indent 주의)
template: 레플리카 컨트롤러에게 어떤 POD 를 기준으로 생성하라고 선언해주어야한다. 포드를 선언할때 사용했던 yaml 파일의 내용을 재사용할 수 있다. POD의정보(metadata ~ spec) 가 레플리카의 spec 아래에 위치한다.
2. Replica Set 생성방법(권장)
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
type: front-end
spec:
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: front-end
selector(optional): 태그를 통해 어떤 POD 가 레플리카를 통해 관리되고 있는지 선언한다.
matchLabels: 해당 태그에 선언된 label 과 매칭되는 모든 POD 들을 관리한다.
레플리카 스케일 적용 및 변경하기
1. 명령어
kubectl scale --replicas=6 -f <파일.yml>
kubectl scale --replicas=6 -f replica-definition.yaml
kubectl scale --replicas=6 <오브젝트타입> <레플리카이름>
kubectl sacel --replicas=6 replicaset my-replicaset
*명령어를 통한 스케일링 변경은 파일을 자동적으로 업데이트해주지 않는다.
2. 선언파일 수정 후 적용
vim replica-definition.yaml
(수정)
kubectl replace -f replica-definition.yaml
레플리카세트 CRUD
1. 생성하기
kubectl create -f <레플리카 정의파일.yaml>
kubectl create -f my-replicaset.yaml
2. 불러오기
kubectl get replicaset
3. 수정하기
kubectl replace -f my-replicaset.yaml
4. 삭제하기
kubectl delete <오브젝트타입> <레플리카셋이름>
kubectl delete replicaset my-replicaset
'CONTAINER > kubernetes' 카테고리의 다른 글
[Kubernetes] POD 포드란? 생성, 수정, 확인, 삭제 (0) | 2021.11.28 |
---|