본문 바로가기

Programming/Cloud

DAY 180. 애플리케이션 배포 설정

 

 

스케줄링

컨테이너를 새롭게 생성할 때 어느 서버에 생성할 것인지 결정하는 것

컨테이너를 생성하기 전에 특정 목적에 부합하는 Node를 선택하는 작업

여러 개의 Node를 사용하는 경우 해당된다.

 

 

nodeSelector

Node의 Label을 이용해서 선택하는 방법

모든 Node에는 기본적으로 설정되어 있는 라벨이 있고 이를 이용해서 Node를 특징 별로 분류해서 선택할 수 있다.

필요한 경우 추가할 수 있다.

yaml파일에 작성할 때는 사용할 Node의 기준이 되는 라벨을 지정하면 된다.

 

kubectl get nodes --show-labels

 

 

▶ Node Label 삭제

Label 뒤에 -(대시)를 입력하면 삭제됨

kubectl label nodes Node이름 삭제할Label명-

 

 


 

컨트롤러

클러스터의 상태를 관찰하고 필요한 경우 변경 수행하거나 요청하는 제어 루프

각 컨트롤러는 현재 클러스터 상태를 원하는 상태에 더 가깝게 이동하려고 한다.

여러 개의 컨트롤러가 있다. 내가 정한 상태를 항상 유지하려고 노력한다.

선언적 작업을 수행할 때 컨트롤러에 의해 관리된다.

기본 리소스 별 컨트롤러들(Deployment Controller, Node Controller 등)이 컨트롤러 매니저 컴포넌트에 의해 관리된다.

 

 

작업 수행 방식

1. 명령형(Imperative)

kubectl 명령어로 직접 실행하고 결과를 돌려 받는 방식

 

2. 선언적(Declarative)

yaml 파일에 최종적으로 도달해야 하는 상태를 명시하고 kubectl apply를 통해 수행하는 방식

쿠버네티스는 선언적 방식을 지향

최종적으로 도달해야 할 상태가 되기 위한 동작을 컨트롤러가 결정

 

 

 

커스텀 리소스

쿠버네티스에서 기본적으로 제공하는 리소스 외 사용자가 직접 정의해서 사용하는 리소스

 

사용 단계

1. CRD 생성

2. 커스텀 리소스 생성

3. 컨트롤러 구현 및 실행

4. 컨트롤러 커스텀 리소스 생성을 감지하고 작업을 수행

 

 


 

기타 오브젝트

 

상황에 따라 Pod를 사용하는 상위 오브젝트들

 

항목 설명
Jobs 특정 동작을 수행하고 종료해야하는 작업을 위한 오브젝트
DaemonSets 쿠버네티스의 모든 노드에 동일한 포드를 하나씩 생성하는 오브젝트
StatefulSets 상태를 갖는 포드를 관리하기 위한 오브젝트