쿠버네티스

쿠버네티스 Pod란?

우잉~ 2024. 11. 8. 14:39

 

 

 

Pod

Pod 개요

- 애플리케이션의 단일 인스턴스

- 쿠버네티스에서 생성할 수 있는 가장 작은 단위

- 쿠버네티스는 컨테이너를 직접 워커 노드에 배포하지 않고 Pod라는 객체에 캡슐화하여 컨테이너를 배포한다.

- 애플리케이션 사용자가 증가하여 더 많은 인스턴스가 필요할 경우, 이미 생성된 Pod에 새 컨테이너를 추가하는 것이 아니라, 새로운 Pod를 생성하여 확장한다. → 각 인스턴스는 별도의 Pod에서 실행됨을 의미하며, 확장 및 축소는 Pod를 생성하거나 삭제함으로써 이루어진다.

 

* 그럼 무조건 Pod는 컨테이너와 1:1 관계를 가지느냐?

→ 그건 아니다. 같은 Pod에 컨테이너를 추가하여 멀티 컨테이너 Pod를 구성할 수 있다. 같은 Pod에 존재하는 컨테이너는 같은 네트워크 네임스페이스를 공유하여 서로 'localhost'로 통신할 수 있다.

멀티 컨테이너 Pod 구성

 

 

pod 배포 명령어 - kubectl run

- pod를 생성하고 그 안에  Docker 컨테이너를 배포한다.

 

(예시)

> kubectl run nginx --image nginx

→ nginx 이미지를 Docker Hub에서 가져와 Pod에 배포하는 명령

 

생성된 pod 확인 명령어 - kubectl get pods

- pod 생성 직후의 STATUS는 ContainerCreating으로 확인되고, 이후 생성이 완료되었을 때는 Running으로 표시된다.

kubectl get pods 명령 출력 결과

 

 


 

실습 - minikube 클러스터 생성하기

 

1. kubectl 설치

kubernetes.io

 

Production-Grade Container Orchestration

Kubernetes, also known as K8s, is an open source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery. Kubernetes buil

kubernetes.io

 

 

Documentation > Tasks > Install Tools로 들어가 자신에게 맞는 운영체제를 선택하고 명령어를 그대로 복사해서 커맨드에 붙여넣으면 된다.

 

curl 명령을 이용한 kubectl binary 설치

 

버전 확인 명령

 

 

2. Minikube 실행

 

Install Tools 페이지에서 Minikube를 설치하는 페이지로 이동한다.

 

> minikube start

* Windows 10 Home은... Hyper-V 활성화를 할 수 없어서,,, 애를 많이 먹었다... 아래 블로그를 참고하여 Hyper-V를 설치하였다................

참고: https://harusw.com/entry/Windows-10-Home%EC%97%90%EC%84%9C-Hyper-v-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9

minikube 실행

 

> kubectl get nodes

현재 실행 중인 노드를 확인할 수 있다.

 

 

3. 노드 배포

> kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0

 kubectl create deployment: 배포 생성 명령어

kicbase/echo-server:1.0 도커 이미지 애플리케이션을 hello-minikube라는 이름으로 배포(Deployment)를 생성하였다.

 

배포 생성 및 배포 상태 확인

 

> kubectl expose deployment hello-minikube --type=NodePort --port=8080

kubectl expose deployment: 생성된 배포를 서비스로서 노출하는 명령어

서비스 노출

 

4. 서비스 액세스

> minikube service hello-minikube
> kubectl port-forward service/hello-minikube 7080:8080

localhost:7080 접속 화면

 

 

5. 클러스터 삭제

> minikube delete --all

삭제 완료

 

 

 


실습 - nginx pod 생성하기

1. 포드 생성하기

> kubectl run nginx --image=nginx

Docker hub에 있는 nginx를 이용하여 이미지를 생성한다.

nginx pod 생성
생성된 pod 확인

 

 

kubectl describe pod [pod 이름]을 사용하면 해당 pod에 대한 상세한 정보를 확인할 수 있다.

pod의 상세 정보 확인하기