article thumbnail image
Published 2024. 4. 12. 21:36

개요

쿠버네티스는 작업자 노드에 직접 컨테이너를 배포하지 않습니다.

컨테이너는 쿠버네티스 객체라고 불리는 Pod라는 형태로 포장되어 제공됩니다.

 

Pod는 애플리케이션의 단일 인스턴스로 쿠버네티스에서 만들 수 있는 가장 작은 물체입니다.

만약 단일 노드 쿠버네티스 클러스터와 단일 인스턴스 포드 형태의 애플리케이션을 실행 중일 때, 엑세스하는 사용자 수가 증가해 앱 규모를 늘려야합니다.

 

이런 상황에서 스핀업할 때 같은 애플리케이션의 새로운 인스턴스로 완전히 새로운 pod를 만들어냅니다.

만약 유저가 더 증가해 현재 노드가 충분한 용량을 확보하지 못할 경우, 클러스터의 새 노드에 추가 배포를 할 수 있습니다.

 

클러스터의 물리적인 용량을 확장할 수 있습니다.

 

따라서 정리해보면 다음과 같습니다.

  • Pod는 애플리케이션에서 실행되는 컨테이너와 1:1 관계를 갖고 있습니다.
  • 확장하려면 새로운 Pod를 만들고, 축소하려면 기존 Pod를 삭제해야 합니다.
  • 애플리케이션 규모를 키우기 위해 기존 Pod에 추가적인 컨테이너를 만들지 않습니다.
  • Pod에 어떤 컨테이너로 구성되어 있는지만 정의하면 됩니다.

 

Multi-Container Pods

  • 일반적으로 포드와 컨테이너는 1:1이지만, 하나의 Pod에 여러 개의 컨테이너가 있을 수 있습니다.
    • 같은 종류의 컨테이너가 여러 개 있는 것이 아닙니다.
    • 가끔씩 Helper Container를 통해 같은 포드에서 컨테이너가 2개 될 수 있지만, Helper 원본 컨테이너가 죽으면 Helper 컨테이너도 죽고, 생성되면 같이 생성됩니다.
  • 두 컨테이너는 localhost라고 불리며 같은 네트워크를 공유해 서로 통신이 가능합니다.
  • 같은 저장 공간도 공유할 수 있습니다.

 

kubectl - Pod 배포하기

  • kubectl run nignx 명령을 통해 포드를 생성하여 Docker container를 배포합니다.
  • kubectl run nginx --image nginx 이미지 파라미터를 사용해 이미지 이름을 명시합니다.
  • kubectl get pods

 

Minikube install

 

  • kubectl run nginx --image=nginx
    • 최신 버전의 Kubernetes에서 kubectl run 명령어는 기본적으로 파드(Pod)를 실행하는 데 사용됩니다
  • 명령형 배포 사용시 kubectl create deployment nginx --image=nginx
    • 명령어는 디플로이먼트(Deployment) 리소스를 생성하는 데 특화되어있습니다.
    • 이 명령어를 사용하면 하나 이상의 파드를 관리하는 디플로이먼트가 생성됩니다.
    • 디플로이먼트는 선언적 업데이트, 롤백, 스케일링 등을 포함한 여러 파드의 라이프사이클을 관리하는 데 유용합니다.

정리하자면 kubectl run은 주로 단일 파드를 빠르게 실행하는 데 사용되며, kubectl create deployment는 디플로이먼트를 생성하여 하나 이상의 파드를 관리하는 데 사용됩니다.

'TIL > 개념정리' 카테고리의 다른 글

Kubernetes overview  (1) 2024.04.12
Docker 배포 최적화  (1) 2024.04.10
Docker 배포  (0) 2024.04.03
PyTorch 튜토리얼  (0) 2024.04.01
Docker Compose  (0) 2024.03.21
복사했습니다!