Kubernetes Replication Controller와 Replica Set
2024. 12. 30. 22:11ㆍ쿠버네티스/쿠버네티스
728x90
반응형
1. Kubernetes Replication Controller와 Replica Set
Replication Controller
- 역할:
- 지정한 수의 Pod가 항상 실행되도록 보장.
- Pod가 실패하면 자동으로 새로운 Pod 생성.
- 여러 Pod를 생성하여 부하를 분산하고 고가용성을 제공.
- 사용 사례:
- 단일 Pod를 실행할 때도 사용 가능. Pod 실패 시 자동 복구.
- 사용자 증가 시 더 많은 Pod를 생성해 부하 분산.
- 구조:
- Replication Controller는 Pod 템플릿을 사용하여 여러 Pod를 생성.
- YAML 정의 파일(RC-definition.yaml)의 주요 섹션:
- apiVersion: v1 (Replication Controller는 Kubernetes API 버전 v1에서 지원).
- kind: ReplicationController.
- metadata: 이름과 레이블 포함.
- spec:
- replicas: 원하는 Pod 개수.
- template: 생성할 Pod의 정의.
- Pod 템플릿 작성:
- 이전에 작성한 Pod 정의 파일을 템플릿 섹션에 그대로 재사용 가능.
- 템플릿과 replicas는 동일한 계층(들여쓰기)이어야 함.
- 명령어:
kubectl create -f RC-definition.yaml
kubectl get replicationcontroller
kubectl get pods
apiVersion: v1
kind: ReplicationController
metadata:
name: myapp-rc
labels:
app: myapp
type: front-end
spec:
replicas: 3
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: frontPod
spec:
containers:
- name: nginx-container
image: nginx
Replica Set
- 역할:
- Replication Controller와 유사하지만, 더 발전된 기능 제공.
- 기존에 생성된 Pod도 관리 가능(레이블 기반 선택).
- 주요 차이점:
- Replica Set은 selector 필드 필수:
- 특정 레이블을 기반으로 관리할 Pod 식별.
- 예: matchLabels를 사용하여 레이블이 일치하는 기존 Pod 관리.
- Replica Set은 selector 필드 필수:
- 구조:
- YAML 정의 파일(ReplicaSet-definition.yaml)의 주요 섹션:
- apiVersion: apps/v1 (Replica Set은 최신 API 버전에서 지원).
- kind: ReplicaSet.
- metadata: 이름과 레이블 포함.
- spec:
- replicas: 원하는 Pod 개수.
- selector: 관리할 Pod의 레이블 정의.
- template: 새로운 Pod 생성 시 사용할 템플릿.
- YAML 정의 파일(ReplicaSet-definition.yaml)의 주요 섹션:
- 명령어:
kubectl create -f ReplicaSet-definition.yaml
kubectl get replicasets
kubectl get pods
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
labels:
app: myapp
type: front-end
spec:
replicas: 3 # 'repicas' 오타 수정
selector:
matchLabels:
type: front-end
template:
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec: # 'spec' 들여쓰기 및 위치 수정
containers:
- name: nginx-container
image: nginx
- Replication Controller와 Replica Set은 고가용성을 위해 여러 Pod를 관리하며, Replica Set은 더 발전된 기능 제공.
- YAML 파일을 통해 Kubernetes 객체 정의 및 관리 가능.
- 명령어를 사용해 객체 생성, 상태 확인, 스케일링 등을 수행할 수 있음.
replicaSet 수정-업데이트 6
kubectl scale --replicas=6 -f rs-demo.yaml
kubectl replace -f rs-demo.yaml # vi로 숫자 수정후 적용
kubectl scale --replicas=6 replicaset[TYPE] myapp-replicaset[NAME]
Selector의 차이
- Equality-Based Selector (RC):
- 특정 레이블 키-값 쌍과 정확히 일치하는 Pod만 선택.
- 예: app=nginx 레이블을 가진 Pod만 선택 가능.
- Set-Based Selector (RS):
- 다양한 조건을 기반으로 Pod를 선택 가능.
- 연산자 사용:
- In: 특정 값 집합에 포함된 경우.
- NotIn: 특정 값 집합에 포함되지 않은 경우.
- Exists: 특정 키가 존재하는 경우.
- DoesNotExist: 특정 키가 존재하지 않는 경우.
- 예: app in (nginx, apache)는 app=nginx 또는 app=apache인 Pod를 모두 선택.
Replication Controller
-
- Kubernetes에서 처음 도입된 복제 컨트롤러.
- 지정된 수의 Pod를 유지하며, Pod가 삭제되거나 실패하면 새로운 Pod 생성.
- 단순한 복제 및 스케일링 작업에 적합.
- 현재는 Replica Set으로 대체되고 있음.
Replica Set
-
- Replication Controller의 개선된 버전.
- 더 유연하고 강력한 Selector 기능 제공(Set-Based Selector).
- 기존에 생성된 Pod도 관리 가능(레이블 기반).
- Deployment와 함께 사용하여 롤링 업데이트 및 롤백 기능 추가 가능
Replica Set deployment비교
#replica set
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-rs
labels:
app: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx-container
image: nginx
#deployments
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginx-container
image: nginx
- spec부터는 똑같음
반응형
'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글
Namespaces (0) | 2024.12.31 |
---|---|
Kubernetes Deployment (0) | 2024.12.30 |
Kubernetes Pods 요약 (0) | 2024.12.30 |
쿠버네티스 파드 (0) | 2024.12.14 |
Kube-Proxy (0) | 2024.12.12 |