Deployments는 실행시켜야 할 Pod의 개수 유지, Application 배포 과정에 롤링 업데이트 적용, 롤백 등의 기능을 지원한다.
Sample YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-deployment # deployment label
spec:
replicas: 3
selector:
matchLabels:
app: nginx-pod # spec.template.metadata.labels와 같은 값으로 유지
template:
metadata:
labels:
app: nginx-pod # spec.selector.matchlables와 같은 값으로 유지 / pod label
spec:
containers:
- name: nginx-container # pod 내부에 생성되는 container의 설정정보
image: nginx
ports:
- containerPort: 80
- spec.replicas : 몇 개의 파드를 실행 할 것인지 지정
- spec.metadata.labels : Deployment Label 지정
- spec.template.metadata.labels : Pod Label 지정
- spec.selector.matchLabels : ReplicaSet 이 관리한 Pod Label 지정 (spec.template.metadata.labels과 동일해야 한다.)
- spec.template.spec.containers : Pod 내부의 container에 대한 설정
Deployment 생성 후 값 확인
- deployment 배포
k apply -f deployment-sample.yaml
k get deploy, pod
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-demo 1/1 1 1 2d20h
deployment.apps/nginx-deployment 3/3 3 3 19m # YAML로 생성한 deployment
NAME READY STATUS RESTARTS AGE
pod/debug 1/1 Running 1 (2d19h ago) 2d19h
pod/nginx-demo-6cfb64b7c5-9gnms 1/1 Running 0 2d20h
pod/nginx-deployment-74489df56c-dc726 1/1 Running 0 19m # YAML로 생성한 pod
pod/nginx-deployment-74489df56c-k4qsp 1/1 Running 0 19m # YAML로 생성한 pod
pod/nginx-deployment-74489df56c-r7s9h 1/1 Running 0 19m # YAML로 생성한 pod
- label 이용 deployment, pod 정보 출력
k get deploy -l app=nginx-deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 20m
k get po -l app=nginx-pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-74489df56c-dc726 1/1 Running 0 21m
nginx-deployment-74489df56c-k4qsp 1/1 Running 0 21m
nginx-deployment-74489df56c-r7s9h 1/1 Running 0 21m
- pod 내부 container name 출력
k get po nginx-deployment-74489df56c-dc726 -o jsonpath='{.spec.containers[*].name}'
nginx-container
'Infrastructure & Systems > Kubernetes' 카테고리의 다른 글
[Kubernetes] Secret 이용 Private Registry 인증정보 설정 (0) | 2025.04.02 |
---|---|
[Kubernetes] Kubespray로 k8s 설치 (0) | 2025.03.31 |
[Kubernetes] StatefulSets and PersistentVolume YAML Sample (0) | 2025.03.24 |
[Kubernetes] DaemonSet YAML Sample (0) | 2025.03.24 |
[Kubernetes] Multi-Cluster 환경에서 kubectl (0) | 2024.11.29 |