IT/CKA

CKA 준비과정 - Kubernetes 개념 (3) / Pod

Primes 2023. 4. 24. 22:04
728x90

Pod 는 내용이 많아 별도로 포스팅하여 정리합니다.

 

Pod ?

- 쿠버네티스의 궁극적 목표는 워커 노드 내에서 컨테이너 형태로 애플리케이션을 배포하는 것이다.

- 이 때, 컨테이너는 Pod 라고 불리는 캡슐 형태의 오브젝트로 서비스를 배포한다.

- Pod : 애플리케이션의 단일 인스턴스, 쿠버네티스의 최소 단위

 

파이썬 캡슐화 파드가 1개 실행되고 있다고 가정할 때, 애플리케이션의 확장이 필요하다면 어떻게 해야하는가?

=> 같은 노드 내 신규 파드를 생성하여 두 개의 파이썬 파드를 배포한다.

=> 노드에 공간이 없다면? - 신규 노드 생성하여 다시 추가 파드를 배포한다.

==> 궁극적으로, 파드는 애플리케이션과 컨테이너의 1:1 관계를 의미한다.

일반적으로 1개의 파드에는 1개의 어플리케이션을 배치한다.

- 파드는 Scale out, in ㅡ 즉, 삭제 / 확대가 자유롭다.

 

Multi-Container Pods

파드 내 2개의 애플리케이션을 배치할 수도 있다.

- 일반적으로 애플리케이션과 파드는 1:1 관계이나, 두 애플리케이션이 밀접한 관계가 있을 경우 두 컨테이너를 1개의 파드에 같이 둘 수 있다.

- 두 컨테이너는 1개의 파드에 존재하므로, 파드가 스케일 인/아웃 시 같이 삭제되고 생성된다.

- 두 컨테이너는 같은 네트워크 공간을 공유한다. 따라서 localhost 통신도 가능하다.

nginx pod 생성 예

위와 같이 nginx 파드를 생성했을 경우, 파드 내 localhost 로는 nginx에 접근할 수 있지만 외부 네트워크에 대해서는 아직 설정하지 않았기에 외부 사용자가 접근할 수는 없는 상태이다.

 

 

YAML in Kubernetes

yaml 파일은 쿠버네티스의 config 파일이다. 일일히 명령어 입력을 할 필요 없이 yaml 파일 개발을 통해 한번에 객체들을 생성할 수 있다. yaml 파일의 문법을 공부한다.

 

Kubernetes definition file은 최상위 레벨에 아래 4가지의 루트 레벨 속성이 포함된다. 필수 필드이며 구성 파일에 반드시 포함되어야 한다.

apiVersion / kind / metadata / spec

 

apiVersion : 오브젝트를 생성하는 데 사용하는 k8s의 API 버전 (v1, apps/v1)

kind : 오브젝트 타입 (Pod, Service, ReplicaSet, Deployment)

metadata : 오브젝트에 대한 데이터, dictionary 값을 작성한다.

메타데이터 작성 시 유의사항은, 들여쓰기 공백을 통해 하위 항목임을 설정한다. 일반적으로 2칸의 띄어쓰기로 설정한다.

spec : dictionary 값으로 작성한다. 파드의 이름과 사용할 이미지값이 들어간다.

name 앞의 - 표기는 리스트의 첫번째 요소임을 뜻한다.

apiVersion, kind, metata, spec 4개 최상위 속성은 반드시 기억해야 하는 필수 요소들이다. yaml 파일 작성시 유의하도록 하자.

반응형