컨테이너 오케스트레이션 도구 :
수많은 컨테이너를 관리하기 위한 툴
Node
Pod
Replicaset
Deployment
Service
Ingress
ConfigMap
Job
NamesSpace
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
$ kubectl apply -f simple-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
# 아래는 파드 템플릿
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
selector:
app: nginx # 배포하려는 파드를 지정(파드가 이미 실행 중이어야 함)
type: LoadBalancer
ports:
- name: nginx
protocol: TCP
port: 80
targetPort: 80
# cozserver-deployment-v1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: cozserver
namespace: default
labels:
app: cozserver
spec:
selector:
matchLabels:
app: cozserver
replicas: 3
template:
metadata:
labels:
app: cozserver
spec:
containers:
- name: springboot
image: donghyunele/cozserver:1.0
ports:
- containerPort: 8080
$ kubectl apply -f cozserver-deployment-v1.yaml --record
# cozserver-service.yaml
apiVersion: v1
kind: Service
metadata:
name: cozserver
namespace: default
spec:
selector:
app: cozserver
type: LoadBalancer
ports:
- name: cozserver
protocol: TCP
port: 8085
targetPort: 8080
$ kubectl apply -f cozserver-service.yaml
$ minikube tunnel# cozserver-deployment-v2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: cozserver
namespace: default
labels:
app: cozserver
spec:
selector:
matchLabels:
app: cozserver
replicas: 3
minReadySeconds: 10
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
app: cozserver
spec:
containers:
- name: springboot
image: donghyunele/cozserver:2.0
ports:
- containerPort: 8080
$ kubectl apply -f cozserver-deployment-v2.yaml --record
# cozserver-deployment-v3.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: cozserver
namespace: default
labels:
app: cozserver
spec:
selector:
matchLabels:
app: cozserver
replicas: 3
minReadySeconds: 10
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
app: cozserver
spec:
containers:
- name: springboot
image: donghyunele/cozserver:3.0
ports:
- containerPort: 8080
$ kubectl apply -f cozserver-deployment-v3.yaml --record
kubectl get all : Pods, Deployment, Service, Replicaset 확인 가능

kubectl rollout history deploymnet 디플로이먼트이름
- 해당 디플로이먼트의 배포 이력 확인 가능

이전 버전으로 롤백
$ kubectl rollout undo deployment/cozserver --to-revision=2