개요
쿠버네티스는 작업자 노드에 직접 컨테이너를 배포하지 않습니다.
컨테이너는 쿠버네티스 객체라고 불리는 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 |