본문 바로가기

⭐ Kubernetes & EKS/EKS

EKS Deployment Manifest

728x90
반응형

# YAML 형식의 리소스 매니페스트

kubectl run 명령어로 해당 서비스를 수행하는것도 문제가 되지 않는다. 허나, 관리 및 재사용 목적으로 서비스를 조금 더 유연하게 사용하고자 한다면 deployment를 활용하는것이 바람직하다. yaml 파일로 작성하고, 만약 버전의 변경이나 업데이트가 된다면 yaml내용만 수정하여 다시 배포하면 자동으로 변경된 내용이 적용되기 때문에 관리가 편리해진다.

# 실행파일 생성

vim jenkins-deploy.yaml

- 아래의 내용을 작성하고 저장하자.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-jenkins
  labels:
    app: jenkins-test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: jenkins-test
  template:
    metadata:
      labels:
        app: jenkins-test
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
        - containerPort: 8080

- 생성한 yaml 파일을 실행하자.

kubectl create -f jenkins-deploy.yaml

kubectl get all

kubectl get pod

# pod을 일부러 삭제하기

kubectl delete pod [pod id] 

kubectl get pod

- 정상적으로 돌아온것을 확인 가능

kubectl get rs
kubectl describe rs [pod-id]

- pod를 삭제 하였지만 바로 다시 살아나서 서비스가 되고 있는것을 확인 할 수 있다.

# 레이블 조회

kubectl get pod

kubectl get pod --show-labels
ec2-user:~/environment/yaml $ kubectl get pod --show-labels
NAME                              READY   STATUS    RESTARTS   AGE     LABELS
deploy-jenkins-7dcdf75b94-gngq8   0/1     Pending   0          3m29s   app=jenkins-test,pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-r2tq4   0/1     Pending   0          3m29s   app=jenkins-test,pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-t2j8f   0/1     Pending   0          116s    app=jenkins-test,pod-template-hash=7dcdf75b94
ec2-user:~/environment/yaml $

# app과 관련된 레이블 생성

kubectl label pod [pod-id] app-

kubectl get pod

- 명령어: kubectl label pod deploy-jenkins-7dcdf75b94-gngq8 app-

ec2-user:~/environment/yaml $ kubectl label pod deploy-jenkins-7dcdf75b94-gngq8 app-
pod/deploy-jenkins-7dcdf75b94-gngq8 labeled
ec2-user:~/environment/yaml $ kubectl get pod --show-labels
NAME                              READY   STATUS    RESTARTS   AGE     LABELS
deploy-jenkins-7dcdf75b94-gngq8   0/1     Pending   0          4m38s   pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-hbr5l   0/1     Pending   0          5s      app=jenkins-test,pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-r2tq4   0/1     Pending   0          4m38s   app=jenkins-test,pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-t2j8f   0/1     Pending   0          3m5s    app=jenkins-test,pod-template-hash=7dcdf75b94

- 라벨링 하기: 4s 로 표시되는 신규 라벨이 생성된 것을 확인 할 수있다.

ec2-user:~/environment/yaml $ kubectl get pod --show-labels
NAME                              READY   STATUS    RESTARTS   AGE     LABELS
deploy-jenkins-7dcdf75b94-7zrjx   0/1     Pending   0          4s      app=jenkins-test,pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-gngq8   0/1     Pending   0          8m40s   pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-hbr5l   0/1     Pending   0          4m7s    pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-r2tq4   0/1     Pending   0          8m40s   app=jenkins-test,pod-template-hash=7dcdf75b94
deploy-jenkins-7dcdf75b94-t2j8f   0/1     Pending   0          7m7s    app=jenkins-test,pod-template-hash=7dcdf75b94
ec2-user:~/environment/yaml $

# 스케일링하기

kubectl scale deploy deploy-jenkins --replicas=5

# app이 있는 pod만 조회하기

kubectl get pod -l app
728x90
반응형