본문 바로가기

CLOUD/CUBE

쿠버네티스(Kubernetes) yaml file - replica, deployment

반응형

 

ReplicaSet은 쿠버네티스의 가용성을 높여주는 기능입니다.

 

pod의 개수를 지정하고 어떤 pod의 기능에 이상이 생겨도 항상 지정한 개수만큼의 pod를 유지해 주는 기능입니다.

 

https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicaset/

 

레플리카셋

레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 레플리카셋의

kubernetes.io

 

 

ReplicaSet

 

cat replica.yaml


apiVersion: apps/v1
kind: ReplicaSet
metadata:
 name: apache-replica
spec:
 replicas: 3
 selector:
   matchLabels:
     app: apache-replica-test
 template:
   metadata:
     labels:
       app: apache-replica-test
   spec:
     containers:
     - name: myweb-container2
       image: httpd:2.4
       ports:
       - containerPort: 80

 

 

 

replica를 생성합니다.

 

kubectl create -f replica.yaml

 

 

 

확인

kubectl get pods

 

pod수가 유지되는지 실험해 보기 위해 pod 하나를 지웁니다.

 

kubectl delete pods apache-replica-4tjf9

 

 

지워진 pod 외에 새로운 pod 하나가 생성 된 것을 확인 할 수 있습니다.

 

kubectl get pods

 

실시간으로 pod를 5개로 늘릴수도 있습니다.

 

kubectl scale --replicas=5 replicaset apache-replica

 

 

 

 

Deployment는 배포 및 관리하는 역할 입니다. 실제로는 Deployment에서 pod수 조정이 가능하기 때문에

replicaset은 잘 쓰지 않습니다.

 

https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/

 

디플로이먼트

디플로이먼트(Deployment) 는 파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다. 디플로이먼트에서 의도하는 상태 를 설명하고, 디플로이먼트 컨트롤러(Controller)는 현재 상태에서 의

kubernetes.io

 

 

Deployment

 

yaml 파일을 생성 합니다.

 

cat Deployment.yaml

 

apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-test
 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

 

 

실행 합니다.

 

kubectl create -f Deployment.yaml

 

 

확인

 

kubectl get pods -o wide

 

pod가 어디서 생성됬는지 확인

 

kubectl get deployments.apps

kubectl get replicasets.apps

 

업데이트를 해봅니다

 

롤링 업데이트 시작

kubectl set image deployment nginx-test nginx=nginx:1.19.0 --record

kubectl rollout history deployment nginx-test

2번째 버전으로 돌아간다는 뜻

kubectl rollout undo deployment --to-revision=2

 

다른 버전으로 시작

kubectl set image deployment nginx-test nginx=nginx:1.18.0 --record

kubectl rollout history deployment nginx-test

 

kubectl get pods

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형