2023. 10. 30. 11:12ㆍk8s
ReplicaSet
ReplicaSet는 Kubernetes 클러스터 내에서 실행 중인 컨테이너화된 애플리케이션의 가용성과 확장성을 유지하기 위해 사용되는 Kubernetes 리소스다. ReplicaSet은 원하는 복제본 수만큼 동일한 팟(Pod)을 유지하도록 설계되었으며, 만약 팟 중 하나가 실패하면 ReplicaSet은 자동으로 대체 팟을 생성하여 지정된 복제본 수를 유지한다.
ReplicaSet의 주요 특징과 목적
- 가용성 확보 : ReplicaSet은 복제본을 유지함으로써 애플리케이션의 가용성을 향상시킨다. 하나 이상의 팟이 실패해도 ReplicaSet은 정의된 복제본 수를 유지하려고 시도하므로 서비스 중단을 방지할 수 있다.
- 스케일링 : ReplicaSet은 수평 스케일링을 지원한다. 애플리케이션의 트래픽이 증가하면 ReplicaSet은 추가 팟을 자동으로 생성하여 부하를 분산시킨다.
- 선언적 구성 : ReplicaSet은 원하는 복제본 수를 정의하도록 YAML 파일 또는 JSON 파일을 사용하여 선언적으로 구성할 수 있다. 이를 통해 애플리케이션 구성을 관리하고 수정하는 데 용이하다.
- 자동 복구 : ReplicaSet은 팟이 중지되거나 삭제되었을 때 자동으로 대체 팟을 생성하여 시스템의 정상 동작을 유지한다.
참고 사이트
ReplicaSet
A ReplicaSet's purpose is to maintain a stable set of replica Pods running at any given time. Usually, you define a Deployment and let that Deployment manage ReplicaSets automatically.
kubernetes.io
요구 사항
nginx를 3개 생성하는 rs-nginx replicas 생성 -> 10로 scale out
replicaset.yml 파일 생성
apiVersion: apps/v2
kind: ReplicaSet
metadata:
name: rs-nginx
spec:
replicas: 3
selector:
matchLabels:
app: rs-nginx
template:
metadata:
labels:
app: rs-nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
실습
kubectl create -f replicaset.yml
kubectl edit rs rs-nginx
kubectl get pod -o wide
kubectl port-forward replicaset.apps/rs-nginx 8080:80
트러블 슈팅
Error: ErrImagePull, toomanyrequests
위와 같은 에러 메시지로 인해 docker image를 pull 하지 못 하는 경우가 있다. 이는 pull 할 수 있는 제한 횟수가 정해져 있기 때문에 나타나는 에러 메시지다. docker에 로그인 하는 경우 이 제한 횟수가 증가해서 트러블 슈팅을 해결할 수 있다. docker에서는 간단히 'docker login'을 통해 로그인 하면 됐지만 k8s에서는 어떻게 해결할 수 있을까?
아래와 같이 개인 registry 등록이 가능하다
kubectl create secret docker-registry <registry-name> --docker-username=<username> --docker-password=<password>
실행하려는 yaml 파일 제일 아래에 아래와 같이 입력하고 적용하면 트러블 슈팅이 해결된다.
imagePullSecrets:
- name: <registry-name>
'k8s' 카테고리의 다른 글
버전 패치 (0) | 2023.10.30 |
---|---|
ReplicaSet 요구명세서 실습 (0) | 2023.10.30 |
라벨 실습 (0) | 2023.10.27 |
라벨 (1) | 2023.10.27 |
liveness probe 실습 (0) | 2023.10.27 |