일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- Computer Vision
- OpenCV
- GUI
- Docker
- POD
- 데이터베이스
- 컴퓨터 비전
- Django
- pytorch
- k8s
- 웹 프로그래밍
- Deep Learning
- paper review
- 논문 리뷰
- MariaDB
- FLASK
- yaml
- 장고
- tensorflow
- kubernetes
- vue.js
- 그래픽 유저 인터페이스
- 딥러닝
- numpy
- 파이썬
- 파이토치
- 텐서플로우
- Web Programming
- Tkinter
- Today
- Total
Maxima's Lab
[Kubernetes] Container와 POD 개념 설명 및 사용 방법 본문
안녕하세요, 오늘은 쿠버네티스에서 Container와 Pod의 개념에 대해서 알아보겠습니다.
먼저 Container (컨테이너)에 대해서 알아보겠습니다.
컨테이너는 애플리케이션 실행에 필요한 코드와 모든 종속성을 포함하는 독립적인 실행 환경입니다. 컨터이너화된 애플리케이션은 다양한 컴퓨터 환경에서 일관된 방식으로 실행될 수 있습니다. 이는 다음과 같은 장점을 가지고 있습니다.
- 환경 일관성 : 개발, 테스트, Production 환경 간에 일관성을 제공합니다.
- 효율성 : 더 적은 시스템 리소를 사용하면서 격리된 환경을 제공합니다.
- 이식성 : 어떤 환경에서든 동일하게 실해될 수 있어, 클라우드 환경과 온프레미스 환경 간 이동이 용이합니다.
- 빠른 배포 및 시작 시간 : 애플리케이션과 서비스를 빠르게 시작하고, 확장 가능합니다.
이어서, Pod (포드)에 대해서 알아보겠습니다.
Pod는 쿠버네티스의 기본적인 배포 단위로, 하나 이상의 컨테이너를 포함할 수 있습니다. Pod 내의 컨테이너는 스토리지, 네트워크를 공유하고, 동일한 노드에서 스케줄링되어 실행됩니다. 이는 다음과 같은 특정을 포함하고 있습니다.
- 공유된 네트워크와 Storage : Pod 내의 컨테이너는 같은 IP 주소와 포트 공간을 공유하고, 서로를 localhost를 통해 찾을 수 있습니다. 또한, 볼륨을 공유하여 데이터를 교환할 수 있습니다.
- 생명주기 관리 : Pod는 컨테이너의 집합으로, 포드가 시작되거나 종료될때 Pod 내의 모든 컨테이너도 함께 시작되고 종료됩니다.
- 높은 결합도 작업의 쉬운 관리 : 밀접하게 관련된 컨테이너를 함께 포드에 배치함으로써 관리를 용이하게 합니다.
다음은, Pod를 활용해서 단일 컨테이너를 실행하는 코드 예시 입니다. 이는 nginx를 사용해서 웹서버를 실행하는 컨테이너를 포드 안에 배치하는 YAML 파일 예시입니다.
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx:latest
ports:
- containerPort: 80
위의 YAML 파일을 구성하는 요소들에 대한 설명은 다음과 같습니다.
- apiVersion : 쿠버네티스 API 버전 (보통 v1을 사용)
- kind : 생성하려는 쿠버네티스 리소스 종류
- metadata : 리소스에 대한 메타데이터
- spec : Pod에 대한 명세입니다.
위의 YAML 파일 (nginx-pod.yaml)을 쿠버네티스 클러스터에 적용하기 위해서는 다음과 같은 명령어를 실행합니다.
kubectl apply -f nginx-pod.yaml
쿠버네티스 클러스터에서 포드 상태를 확인하기 위해서는 다음 명령어를 사용 가능합니다.
kubectl get pods
쿠버네티스에서 포드를 삭제하는 명령은 다음과 같습니다.
kubectl delete pod nginx-pod
위의 명령어와 같이 특정 Pod의 이름을 사용하여 삭제할 수도 있지만, 다음과 같이 특정 레이블(selector)에 일치하는 모든 포드를 삭제하는 방법은 다음과 같습니다.
kubectl delete pods -l app=nginx
위의 명령어는 app=nginx 레이블을 가진 모든 Pod를 삭제하는 명령어 입니다.
이상으로 Container와 Pod의 개념에 대해서 알아보고 사용하는 방법에 대해서 알아보았습니다.
감사드립니다.
'Kubernetes' 카테고리의 다른 글
[Kubernetes] YAML 파일 내 Object kind (k8s 객체 유형) (0) | 2024.06.09 |
---|---|
[Kubernetes] Rancher Desktop 설치 방법 (Ubuntu) (0) | 2024.05.22 |
[Kubernetes] Flask 애플리케이션을 Kubernetes 클러스터 배포하는 방법 (0) | 2024.03.03 |
[Kubernetes] kubectl 개념 및 사용 방법 (create, apply, get, edit, scale 등) (0) | 2024.03.02 |
[Kubernetes] YAML 파일 작성하는 방법 (Pod, Deployment, Service, ConfigMap, Secret, PVC) (0) | 2024.03.02 |