DevOps:leehi9817
[Kubernetes]Controller(ReplicaSet, Deployment) 본문
Solution Architect/Kubernetes
[Kubernetes]Controller(ReplicaSet, Deployment)
leehi9817 2023. 5. 31. 10:28Controller
Cluster의 Pod들을 관찰하여 관리자가 선언한 Pod의 개수를 보장해주는 기능을 수행
- Auto Healing: Pod 또는 Node에 문제가 생겼을 경우 자동으로 복구 (ex: ReplicaSet)
- Software Update: Pod를 업데이트 및 롤백하는 기능 (ex: Deployment)
- Auto Scaling: Pod의 리소스가 부족할 때 Pod을 추가적으로 생성
- Job: 일시적인 작업을 위해 필요한 순간에만 Pod을 만들었다가 삭제할 수 있는 기능
Replica Set
Pod의 숫자를 보장해주는 Controller
# vi replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-replicaset
spec:
replicas: 3 # desired state (kube-controller-manager)
selector:
matchLabels:
app: nginx-replicaset
template:
metadata:
name: nginx-replicaset
labels:
app: nginx-replicaset
spec:
containers:
- name: nginx-replicaset-container
image: nginx
ports:
- containerPort: 80
# kubectl apply -f replicaset.yaml
# kubectl get replicasets.apps -o wide
# kubectl describe replicasets.apps nginx-replicaset
# kubectl edit replicasets.apps nginx-replicaset
# kubectl scale replicaset nginx-replicaset --replicas 3
- ReplicaSet은 3개의 Replicas로 구성 (template에 정의한 Pod가 3개 배포됨)
- spec.selector(선택자)를 통해 nginx-replicaset이라는 Labels을 가지고 있는 Pod들의 개수를 보장
- Pod의 개수가 보장되기 때문에 관리자가 원하는 애플리케이션을 안정적으로 배포할 수 있음
- 하지만 추후 해당 애플리케이션을 업그레이드하여 배포해야하는 경우가 생기게 되는데 Replica Set은 업데이트에 관한 기능을 제공하지 않음 → Deployment를 사용하여 해결
Deployment
Pod와 ReplicaSet에 대한 선언적 업데이트를 제공
ReplicaSet이 지원하지 못했던 업데이트에 관한 기능을 함께 지원(V1, V2, V3)
# vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deployment
template:
metadata:
name: nginx-deployment
labels:
app: nginx-deployment
spec:
containers:
- name: nginx-deployment-container
image: nginx
ports:
- containerPort: 80
# kubectl apply -f deployment.yaml
# kubectl get deployments.apps -o wide
# kubectl describe deployments.apps nginx-deployment
# kubectl edit deployments.apps nginx-deployment
- Deployment는 3개의 Replicas로 구성 (template에 정의한 Pod가 3개 배포됨)
- spec.selector(선택자)를 통해 nginx-deployment라는 Labels을 가지고 있는 Pod들의 개수를 보장
- Pod의 개수가 보장되기 때문에 관리자가 원하는 애플리케이션을 안정적으로 배포할 수 있음
- 다양한 방법으로 업데이트를 지원
'Solution Architect > Kubernetes' 카테고리의 다른 글
[Kubernetes] Kubernetes란? / Kubernetes의 주요 기능 (0) | 2023.06.05 |
---|---|
[Kubernetes] Kubernetes Diagram (0) | 2023.06.05 |
[Kubernetes]Ingress (0) | 2023.06.02 |
[Kubernetes] Deployment 롤링 업데이트 (0) | 2023.05.31 |
[Kubernetes] Service (ClusterIP, NodePort, LoadBalancer) (0) | 2023.05.30 |
Comments