YAML 구조 이해하기
apiVersion: apps/v1 # 사용할 API 버전
kind: Deployment # 리소스 종류 (Pod, Service, Deployment 등)
metadata:
name: my-nginx # 리소스 이름
spec:
replicas: 2 # 파드 개수
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21 # 사용할 이미지
ports:
- containerPort: 80
- 사용 가능한 API 버전은 kubectl api-versions 명령으로 확인할 수 있음
Deployment YAML 만들기
01. nginx-deployment.yaml 생성
- wsl에서 minikube를 실행
- minikube start
- yaml file을 보관할 디렉터리 생성
- mkdir <디렉터리 명>
- mkdir practice 로 practice 디렉터리 생성
- 해당 디렉터리로 이동
- cd practice
- 아래 yaml 파일 생성
- vi nginx-deployment.yaml
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
- 생성하기
02. 배포
# 디렉터리 내에서 명령 실행
kubectl apply -f nginx-deployment.yaml
03. 확인
# deployment 생성 확인
kubectl get deploy
# pod 생성 확인
kubectl get po
Service YAML 만들기
01. nginx-service.yaml 생성
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-nginx-service
spec:
type: NodePort # Service 타입
selector: # pod 선택 기준
app: nginx
ports:
- port: 80 # service port
targetPort: 80 # pod의 실제 port
nodePort: 30036 # 생략 가능, 생략시 node port는 자동할당됨
- 생성하기
02. 배포
# 디렉터리 내에서 명령을 실행
kubectl apply -f nginx-service.yaml
03. 확인
# 서비스 생성 확인
kubectl get svc
# minikube로 서비스 접속 확인
minikube service my-nginx-service
YAML 파일 수정 후 배포
01. yaml 파일 수정
- image 변경, replicas 갯수 변경, volume 추가 등의 작업 또한 yaml 파일을 수정하여 가능함
- 에디터를 통해 기존의 yaml 파일에 접근하여, 수정한 파일을 재배포 하면 됨!
02. 재배포
kubectl apply -f nginx-deployment.yaml
03. 확인
- 기존 deployment가 변경된 부분만 업데이트 됨
- 변경된 항목에 따라 롤링 업데이트가 자동 수행됨
- 이미지 버전을 변경했으므로, pod가 하나씩 새 버전으로 재시작 됨
# 업데이트 상황 확인하기
kubectl rollout status deployment/my-nginx
# 변경된 deployment 확인
kubectl get deploy -o wide
04. rollback
- 실수로 잘못 배포했을 때는 undo를 통해 배포를 취소할 수 있음
- 직전 상태로 자동 롤백됨
kubectl rollout undo deployment/my-nginx
05. 실습 리소스 정리
# 서비스 삭제
kubectl delete svc my-nginx-service
# delpoyment 삭제
kubctl delete deploy my-nginx
# minikube 정지
minikube stop
More
kubectl diff
- 현재 클러스터에 적용된 리소스와 수정한 YAML 파일의 내용을 **비교(diff)**해서 어떤 부분이 바뀌는지 출력해줌
- 실제 적용되지 않으며, 변경 전 시뮬레이션을 위해 사용함
# kubectl diff -f <파일명>
kubectl diff -f nginx-deployment.yaml
kubectl edit
- 클러스터에 이미 배포된 리소스를 직접 편집해서 실시간으로 변경해줌
- 클러스터의 리소스를 YAML로 열어 수정과 동시에 적용하는 명령어
- 실시간으로 클러스터에 바로 적용되기 때문에 테스트 환경에서만 사용하는 것이 좋음
- YAML 문법이 클리면 저장할 때 오류가 발생함
- CI/CD 환경에서는 해당 명령어 사용을 추천하지 않음
# kubectl edit <리소스종류>/<이름>
kubectl edit deployment/my-nginx
728x90
'Study > Kubernetes' 카테고리의 다른 글
[실습4] Nginx 배포하기 (1) | 2025.07.14 |
---|---|
[실습3] kubectl 명령어 익히기 (0) | 2025.06.25 |
[실습2] Minikube 사용해보기 (1) | 2025.06.25 |
[실습1] WSL에 Docker 및 Minikube 설치 (0) | 2025.06.23 |
[이론] 쿠버네티스 구성요소 (1) | 2025.06.23 |
댓글