on
레플리케이션 컨트롤러오 레플리카 셋
레플리케이션 컨트롤러오 레플리카 셋
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