안녕하세요, 쯀리입니다. 이제 진짜 봄이에요!
오늘은 Kubernetes 개념에 관련해서 더 알아보도록 할게요!
https://funlife-julie.tistory.com/36
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-배포는 어떤 종류가 있는지 살펴 보도록 합시다.
점점 이해되실거에요!!
화이팅!!!!
참조
'IT 잡지식 > DevOps' 카테고리의 다른 글
[CKA] KodeKloud - CoreConcept Deployments와 Namespaces (0) | 2024.05.27 |
---|---|
[CKA] KodeKloud - CoreConcept PODs와 ReplicaSets (0) | 2024.05.23 |
[CKA] CKA를 준비하며 다시잡는 쿠버네티스 개념 (0) | 2024.03.28 |
[K8s] Kubernetes-쿠버네티스란? (0) | 2024.01.02 |
[Docker] React + Nginx (0) | 2023.11.09 |