Cloud/k8s-CKA

[CKA] 3. ReplicaSet & Deployments

jinkwon.kim 2023. 1. 11. 22:42
728x90
반응형

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

[CKA] 4. Service

728x90
반응형

'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