Replicaset란?
Pod의 High Availablity를 지원합니다.
Pod에 문제가 생기면 새로운 Pod를 Cluster 내부에 생성 합니다.
즉, ReplicaSet은 지정된 수의 동일한 Pod의 실행을 유지하려는 목적으로 사용됩니다.
Replication Controller VS Replicaset
Replication Controller
- 오래된 기술
- Replication Controller로 생성한 것만 관리 할 수 있습니다.
Replicaset
- 최신 기술
- Replicaset 생성의 일부로 생성되지 않은 Pod도 Replicaset에서 관리할 수 있기 때문입니다.
가장큰 차이점
selector를 사용 할 수 있냐 없냐가 제일 큰 차이점.
Replicaset 설정
디플로이먼트로 생성된 레플리카셋(rs)을 보려면, kubectl get rs 를 실행한다. 다음과 유사하게 출력된다.
NAME DESIRED CURRENT READY AGE
nginx-deployment-75675f5897 3 3 3 18s
레플리카셋의 출력에는 다음 필드가 표시된다.
- NAME 은 네임스페이스에 있는 레플리카셋 이름의 목록이다.
- DESIRED 는 Replicas생성시에 목표로한 Pod의 갯수 입니다. 이것은 replicas 설정 값과 동일 합니다.
- CURRENT 는 현재 실행 중인 레플리카의 수를 표시한다.
- READY 는 사용자가 사용할 수 있는 애플리케이션의 레플리카의 수를 표시한다.
(Pod가 정상 생되면 DESIRED만큼 떠야 한다) - AGE 는 애플리케이션의 실행된 시간을 표시한다.
유용한 명령어
1. repcliaset 버전 정보 찾기
kubectl explain replicaset
2. replicationconterollers 또는 replicaset 설정 보기
kubectl describe replicationcontrollers/nginx
or
kubectl describe replicaset/frontend
3. kubectl 로 replicaset 수정
kubectl edit replicasets.apps new-replica-set
Deployment란?
디플로이먼트(Deployment) 는 파드와 레플리카셋(ReplicaSet)에 대하여 선언적 업데이트를 제공한다.
좀더 풀어서 말하면, Deployment 필요에 따라 롤링 업데이트, 변경 실행 취소, 일시 중지 및 재개를 사용하여 기본 인스턴스를 원활하게 업그레이드하는 기능을 제공합니다.
Deployment 정의
위 정의에 따라 depolyment를 생성하게 되면 replicaset도 같이 생성하는 것을 볼 수 있습니다.
그래서 deployment가 생성한 pod의 이름은 "{replicaset}-{hash}"로 생성이 됩니다.
ReplicaSet과 Deployment의 관계
Deployment는 실제로 ReplicaSet을 관리하고, 이 ReplicaSet은 파드를 관리합니다. Deployment를 사용하면 롤아웃과 롤백, 스케일링 등과 같은 파드 관리 작업을 보다 세밀하게 제어할 수 있습니다.
YAML 파일 쉽게 만드는 Tip
Create an NGINX Pod
kubectl run nginx --image=nginx
Generate POD Manifest YAML file (-o yaml). Don't create it(--dry-run)
kubectl run nginx --image=nginx --dry-run=client -o yaml
Create a deployment
kubectl create deployment --image=nginx nginx
Generate Deployment YAML file (-o yaml). Don't create it(--dry-run)
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml
Generate Deployment YAML file (-o yaml). Don't create it(--dry-run) with 4 Replicas (--replicas=4)
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml > nginx-deployment.yaml
Save it to a file, make necessary changes to the file (for example, adding more replicas) and then create the deployment.
kubectl create -f nginx-deployment.yaml
OR
In k8s version 1.19+, we can specify the --replicas option to create a deployment with 4 replicas.
kubectl create deployment --image=nginx nginx --replicas=4 --dry-run=client -o yaml > nginx-deployment.yaml
정리
Replicaset은 Depolyment를 사용하기 위환 필수 요소이다.
그래서 Deployment와 Replicaset의 정의 차이는 kind 밖에 존재 하지 않는다.
Next Post
'Cloud > k8s-CKA' 카테고리의 다른 글
[CKA] 6. Object를 관리하는 방법 3가지 (0) | 2023.01.29 |
---|---|
[CKA] 5. namespace (0) | 2023.01.24 |
[CKA] 4. Service (0) | 2023.01.20 |
[CKA] 2. pod 란 (0) | 2022.11.26 |
[CKA] 1. k8s가 뭔가? (0) | 2022.11.11 |