[Cloud] 쿠버네티스(Kubernetes, k8s) 오브젝트(Object)-Namespace, Pod
본문 바로가기
IT/Cloud

[Cloud] 쿠버네티스(Kubernetes, k8s) 오브젝트(Object)-Namespace, Pod

by 로진김 2021. 6. 24.

Kubernetes Object 개요

 kubernetes는 Object를 갖는데 k8s 시스템에서 영속성을 갖는 개체입니다. Kubernetes의 api를 통해 생성되며 api 요청 시 JSON 형식으로 정보를 전달한다는 특징이 있습니다. JSON 형식의 정보 전달을 위해 .yaml 확장자 형식의 파일로 정의합니다. yaml 형식으로 저장하기 위해 요구되는 필드에는 크게 4가지가 있습니다.

 

  • apiVersion : Object 생성을 위한 k8s의 api 버전을 말합니다.
  • kind : Object의 종류를 표시합니다.
  • metadata : 이름, 문자열 ID, Namespace 등을 기입합니다.
  • spec : Object의 할당할 리소스나 상태, 조건을 정의하고, Object의 종류마다 형식이 다르고 중첩된 필드로 사용이 가능합니다.

Object를 관리하기 위해 kubectl의 커맨드를 사용하여 제어할 수 있습니다. Object는 사용자가 지정한 이름과 k8s 시스템 자체가 생성하는 ID가 있습니다. 

kubectl apply -f [yaml_file]

 이 명령어를 사용하면 Kubernetes의 Object를 생성할 수 있습니다.

 


Namespace

Namespace는 대표적인 Kubernetes의 Object이며, 대부분의 리소스가 Namespace에 속합니다. 리소스가 해당 Namespace에 속하는지 알기 위해서 두 가지 명령어로 확인할 수 있습니다. Namespace에 속하는 리소스로는 pod, deployment, replicaset, service, configmap 등이 있습니다.

kubectl api-resource --namespaced=true

 

반면, Namespace에 속하지 않는 리소스는 namespace, node, componentstatus, configs 등이 있습니다.

kubectl api-resources --namespaced=false

 


Pod

 Pod는 Kubernetes Application의 기본 단위로, Object 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위입니다. Pod는 컨테이너, 볼륨(저장소 리소스), 특정 네트워크 IP, 컨테이너 동작을 위한 옵션을 캡슐화한 배포의 단위입니다.

 

 Pod는 단일 컨테이너만 동작하는 경우 즉, 컨테이너 1개 만을 Pod에 캡슐화한 경우와 다중 컨테이너가 작동하는 경우 즉, 복수개의 컨테이너를 캡슐화 한 Pod 두 가지 형태로 존재할 수 있습니다. 그러나 많은 Kubernetes 기반의 클라우드에서는 단일 컨테이너 형태를 권장합니다. 왜냐하면 다중 컨테이너를 사용하게 된다면, 하나의 Pod 안에 존재하는 컨테이너들은 네트워크와 스토리지를 공유하기 때문에 비효율적입니다.

 

※ Kubernetes는 Pod 단위로 관리하며 컨테이너를 직접 관리하지 않습니다. 

Pod 형태

Pod Lifecycle

 Pod는 스케줄러에 의해 정해진 Node 위에서 동작하며, 4가지 상황이 아니라면 정해진 노드에서 동작합니다. 1. 프로세스가 종료되거나, 2. Pod가 삭제되거나, 3. 노드의 자원 부족으로 삭제되거나 4. 노드에 장애가 발생하지 않는 한 생성될 때

 Pod 자체에 self-healing이 없어서 지정된 노드에 장애가 발생하거나 스케줄링에 실패한다면 노드는 삭제됩니다.

 

Pod Controller

 컨트롤러는 다수의 Pod를 생성하고 관리합니다. 컨트롤러는 클러스터 범위 내에서 Pod에 대한 개수를 핸들링하고(Replication으로 Pod의 개수를 지정) Roll out(개수를 늘리고 줄이는 동적 기능), self-healing을 제공하여 다른 가용 pod를 만들어줍니다. 컨트롤러 종류에는 Deployment, Statefulset, Daemonset 등이 있습니다. 이 컨트롤러들도 Kubernetes의 Object 종류입니다.

반응형