디플로이먼트(Deployment)의 장점
파드의 수를 지정하는 대로 여러 개의 파드를 쉽게 생성할 수 있음
-> 파드를 100개 생성하라고 시키면 디플로이먼트가 알아서 파드를 100개 생성해줍니다.
파드가 비정상적으로 종료된 경우, 알아서 새롭게 파드를 생성해 파드를 유지해줍니다.
동일한 구성의 여러 파드를 일괄적으로 일시 중지, 삭제, 업데이트를 하기가 쉽다.

apiVersion: apps/v1 # api 버전 공식 문서 참조
kind: Deployment
metadata:
name: spring-deployment
# Deployment 세부 정보
spec:
replicas: 3 # 3개의 복제본을 생성합니다.
selector:
matchLabels:
app: backend-app
# 배포할 Pod 정의
template:
metadata:
labels: # 카테고리
app: backend-app
spec:
containers:
- name: spring-server
image: spring-server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080 # 다른 개발자들이 알기 위해 명시적으로
디플로이먼트(Deployment) 생성 후에 확인 해주기


외부로부터 요청을 받는 역할/외부로부터 들어오는 트래픽을 받아, 파드(Pod)에 균등하게 분배해주는 로드밸런서(Load Balancer) 역할을 하는 기능입니다.

apiVersion: v1
kind: Service
metadata:
name: spring-service # Service 이름
# Service 세부 정보
spec:
type: NodePort # Service 종류
selector:
app: backend-app # Pod를 선택하기 위한 레이블 deployment에서 정의한 레이블과 일치해야 합니다.
ports:
- protocol: TCP # 프로토콜은 TCP로 설정합니다.
port: 8080 # 쿠버네티스 내부에서 Service에 접근할 때 사용할 포트입니다.
targetPort: 8080 # Pod의 컨테이너 포트와 일치해야 합니다.
nodePort: 30000 # 외부에서 사용자들이 접근하게 될 포트 번호입니다.



docker ps 명령어로 컨테이너 확인
docker kill [컨테이너 ID] 명령어로 컨테이너를 죽였는데 RESTARTS에서 1이라고 되어 컨테이너가 다시 복구되었다.





