본문 바로가기
IT 잡지식/DevOps

[CKA] Kubernetes 개념2 (Replication ControllersVS Replica Set)

by 쯀리♥️ 2024. 4. 2.

 

 

안녕하세요, 쯀리입니다. 이제 진짜 봄이에요!

오늘은 Kubernetes 개념에 관련해서 더 알아보도록 할게요! 

https://funlife-julie.tistory.com/36

 

[CKA] CKA를 준비하며 다시잡는 쿠버네티스 개념

안녕하세요, 쯀리입니다. 그동안 바빠서 블로그에 글을 쓸 수가 없었는데용..ㅜ 최근에 CKA를 준비하며 다시 잡은 Kubernetes의 기본적인 명령어들 및 개념들을 다시 잡아보려합니다! 화이팅화이팅>

funlife-julie.tistory.com

 


 

Replication Controllers VS Replica Set

Replication : 복제하다

 

말 그대로 Kubernetes 실행되는 파드 개수에 대한 가용성을 보증하며 지정한 파드 개수만큼 항상 실행될 수 있도록 관리 합니다.

즉 5개의 파드를 항상 실행 하도록 설정하면 이후 파드 1개가 삭제될 경우 다시 파드 1개가 실행되어 5개를 유지할 수 있도록 해줍니다.

클러스터의 원하는 상태를 유지하기 위해 파드를 자동으로 확장하거나 축소하는 데 도움이 됩니다.

(현재는 Replication Controller보다 Replica Set으로 사용하는 추세입니다. 이유는 밑에 설명...)

 

우선 yaml형식을 보겠습니다.

 

ReplicationController

replication-controller.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myapp-rc
  labels:
    app: myapp
    type: front-end
spec:
  template: 
    //pod에 들어갔던 metadata 와 spec을 복사 붙여넣기!
    metadata:
     name: myapp-pod
     labels:
	     app: myapp 
	     type: front-end
    spec: 
	   containers: 
			 - name: nginx-container
				 image: nginx

replicas: 3 //3개의 pod를 만들자!

 

 

Replica Set

replica-set.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-replicaset
  type: front-end
spec: 
    template: 
    //pod에 들어갔던 metadata 와 spec을 복사 붙여넣기!
	    metadata:
	     name: myapp-pod
	     labels:
		     app: myapp 
		     type: front-end
		   spec: 
			   containers: 
                   - name: nginx-container
                     image: nginx

     replicas: 3 //3개의 pod를 만들자!
       selector: 
           matchLabels:
               type: front-end

 

 

Replicaset과 Replication Controller의 다른점을 확인하셨나요? 

주요한 차이점은 apiVersion이 다르다는 것인데요.

Replication Controller : v1

ReplicaSet : apps/v1으로 더 다양한 기능을 포함하고 있습니다.

 

두번째 차이점은 ReplicaSet에서는 Replication Controller와눈 다르게 template로 생성하지 않은 pod를 관리할 수 있는 기능이있습니다. 

바로 Selector인데, Selector에 Label을 통해 필터링해서 관리하게 됩니다. 

 


Label & Selector

Replia Set은 Pod를 지속적으로 모니터링하는데, Label은 이때 어떤 Pod를 모니터링할지 선별하기 위해서 존재합니다.

Selector 내부에 Label을 지정해서 template으로 생성하지 않은 Pod도 관리할 수 있습니다.

 

Label로 필터링해서 모니터링을 수행하는데, 한번 예시를 확인해볼게요.

 

pod예시는 아래와 같습니다.

## frontend-pod.yaml
apiVersion: v1
kind: Pod
metadata:
	name: myapp-pod
	labels:
		type: front-end

 

Replica Set 예시

## replica-set.yaml

replicas: 6
selector: 
  matchLabels:
    type: front-end

 

Replica Set과 Replication Controller의 차이점을 알았다면

Replica Set 명령어들을 알아보겠습니다. 


Replica Set관련 명령어

// replicaSet 새로 생성
kubectl create -f replicaset-def.yml

kubectl get replicaset
kubectl delete replicaset myapp-replicaset
kubectl replace replicaset myapp-replicaset
kubectl edit replicaset myapp-replicaset

kubectl scale --replicaset=6 -f replicaset-definition.yml

// replicaset 삭제방법
kubectl delete replicaset [replicaset 이름]
kubectl delete rs [replicaset 이름]

 

 

아직 Replica Set을 수동으로 수정하였다고 해도 완벽하게 수정되지 않을 수 있습니다. 

이럴땐 Pod를 전부 삭제하고 다시 실행해봅시다.

kubectl get replicaset <replicaset-name> -o yaml > replicaset.yaml

## 다시 적용하는방법
kubectl delete replicaset new-replicaset 

kubectl apply -f replicaset.yaml

 

 

 


Replica Set에 대해 알아보았습니다. 

아직 감이안오실텐데요ㅜ 저도 그랬습니다..ㅎㅎ

 

다음엔 Deployment-배포는 어떤 종류가 있는지 살펴 보도록 합시다.

점점 이해되실거에요!!

 

화이팅!!!!

 


참조

 Kubernetes for the Absolute Beginners - Udemy