레플리케이션 컨트롤러오 레플리카 셋

레플리케이션 컨트롤러오 레플리카 셋

728x90

# 레플리케이션 컨트롤러와 레플리카 셋

- 문제가 발생했는지 모니터링하는 서비스

- 노드가 클러스터에서 사라지는 경우 대체포드를 생성

- pod의 healthy 는 레이블을 통해 조회됨

# 레플리케이션 컨트롤러의 필수요소 3가지

1. 복제본 수

2. 레이블 셀렉터

3. 포드 템플릿

# 레플리케이션 컨트롤러 실습

# yaml 파일 자성

- 쿠버네티스 공식 사이트에서 문서검색 > rc > ReplicationController | Kubernetes > kind:

gedit http-go-rc.yaml

apiVersion: v1 kind: ReplicationController metadata: name: http-go spec: replicas: 3 selector: app: http-go template: metadata: name: http-go labels: app: http-go spec: containers: - name: http-go image: gasbugs/http-go ports: - containerPort: 8080

# 생성된 파일 실행하기

kubectl create -f http-go-rc.yaml kubectl get rc kubectl get pod

# pod 을 강제로 지워보기

kubectl get pod 에서 조회된 1개의 pod를 삭제

kubectl get pod kubectl delete pod http-go-dxmnm

# 삭제 후 결과조회

kubectl get pod 를 해보면 1개의 pod가 새로 생성된것을 볼 수 있다. rc에 의해사 복구가 된 것이다.

# 레이블을 변경하여 테스트

kubectl get pod --show-labels

- 레이블을 삭제

kubectl label pod http-go-pz4kr app-

- 레이블이 삭제된 pod는 삭제되지는 않았지만 리스트에 남아있고, 레이블을 삭제한 pod의 레이블이 신규로 생성되어 있는것을 확인 할 수 있다.

# 어느 노드(worker)에 있는지 확인하기

kubectl get pod -o wide

# 노드의 연결을 강제로 끊어서 서비스 확인해보기

- 마스터 노드에서

kubectl get pod -w 옵션을 주어 모니터링을 수행

# work2로 이동하여 노드를 중지하기

- 버추얼 박스의 하단의 네트워크 아이콘을 클릭하여 네트워크를 중단하기

- 5분정도 유예시간을 두고 pod가 pending상태로 들어간다.

- 다시 worker2의 네트워크를 복구하게 되면 정상적으로 복구가 되는것을 볼 수 있다.

# 여러가지 조회 및 명령어

kubectl get rc http-go kubectl rc http-go -o -wide kubectl delete rc http-go

# 스케일링 관련

# 레플리카스를 수정하는 방법

- 첫번째 방법

kubectl scale rc http-go --replicas=5 kubectl get pod

- 두번째 방법

sudo apt install vim -y kubectl edit rc http-go

spec: 절에 있는 replicas 갯수를 조절하면 된다.

- 수정을 하면 바로 반영이 된다.

- 세번째 방법

cp http-go-rc.yaml http-go-rc-v2.yaml vim http-go-rc-v2.yaml

> 레플리카를 5개로 수정

kubectl apply -f http-go-rc-v2.yaml

* 스케일링 하는 3가징 방법에 대해 알아보았는데 상황에 맞게 쓰면 된다.

728x90

from http://may9noy.tistory.com/235 by ccl(A) rewrite - 2021-09-08 03:00:50