2024. 12. 14. 17:47ㆍ쿠버네티스/쿠버네티스
파드의 기본 개념
Kubernetes Pods는 관련된 컨테이너들 간의 효율적인 통신과 리소스 공유를 가능하게 하는 중요한 개념
- 쿠버네티스에서 파드는 애플리케이션의 단일 인스턴스를 나타내며, 가장 작은 배포 단위입니다.
- 파드는 일반적으로 하나의 컨테이너와 일대일 관계를 가지지만, 여러 컨테이너를 포함할 수도 있습니다. 이러한 경우, 보조 컨테이너가 주 애플리케이션 컨테이너를 지원하는 역할을 할 수 있습니다.
확장 및 축소
- 애플리케이션의 사용자 수가 증가하면 새로운 파드를 생성하여 확장할 수 있습니다. 기존 파드에 컨테이너를 추가하지 않습니다.
- 클러스터의 용량이 부족할 경우, 새로운 노드를 추가하여 물리적 용량을 확장할 수 있습니다.
컨테이너 간 통신 및 자원 공유
- 동일한 파드 내의 컨테이너들은 같은 네트워크 공간을 공유하므로 서로 로컬 호스트로 직접 통신할 수 있습니다.
- 동일한 스토리지 공간도 쉽게 공유할 수 있습니다.
쿠버네티스와 도커의 차이점
- 도커에서는 각 컨테이너를 개별적으로 관리해야 하지만, 쿠버네티스는 파드를 통해 이러한 작업을 자동화합니다.
- 파드는 정의된 컨테이너들이 함께 생성되고 삭제되도록 보장합니다.
파드 배포 방법
- kubectl run 명령어는 도커 컨테이너를 배포하면서 자동으로 파드를 생성합니다.
- 이미지 이름은 --image 매개변수를 사용하여 지정하며, Docker Hub 또는 조직 내의 개인 저장소에서 이미지를 가져올 수 있습니다.
- kubectl get pods 명령어로 현재 클러스터 내의 파드 목록을 확인할 수 있습니다.
PODS Aagin!
- pod 하나에 여러 개의 container를 생성하는 경우는 보통 app의 모니터링이나 health check 기능을 적용을 위한 경우가 있음
- 동일한 network space를 사용하므로, 두 개의 container는 localhost로 통신 가능하며, same storage를 사용 가능
- container 기반 애플리케이션을 실행
- 애플리케이션의 상태를 모니터링할 helper를 생성
- 애플리케이션과 helper를 매칭할 수 있도록 매핑 테이블을 생성하고 관리
Top 3 kubectl Commands
- kubectl run nginx-pod --image=nginx:latest – 명령형 방식으로 Pod 생성하기.
- kubectl apply -f nginx-pod.yaml – YAML 설정 파일을 적용하여 Pod 생성하기.
- kubectl get pods – 클러스터에서 실행 중인 모든 Pod 보기.
예시: YAML 파일을 사용하여 동일한 nginx Pod 생성하기
# 이 구성 파일의 이름은 대소문자를 구분합니다.
# 정확한 대소문자를 사용하세요.
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
YAML 파일을 사용한 Pod 생성 및 관리
- apiVersion: 사용하는 Kubernetes API 버전을 지정합니다. 이 예에서는 v1입니다.
- kind: 생성하려는 리소스의 유형을 정의합니다. 여기서는 Pod입니다.
- metadata: 객체에 대한 정보를 포함하며, Pod의 이름과 같은 세부 사항을 지정합니다.
- spec: 객체의 원하는 상태를 설명하며, 컨테이너, 이미지 등을 포함합니다.
Kubernetes Pods 이해하기
Kubernetes는 컨테이너화된 애플리케이션을 배포하고 관리하기 위한 강력한 도구를 제공하는 인기 있는 컨테이너 오케스트레이션 플랫폼입니다. Kubernetes 아키텍처의 핵심에는 Pod라는 개념이 있습니다. 이 글에서는 Kubernetes Pods의 개념을 탐구하고, Pods가 무엇인지, 왜 중요한지, 그리고 간단한 명령어를 사용하여 어떻게 생성하고 상호작용할 수 있는지에 대해 설명합니다.
Pods란 무엇인가?
- Pod는 하나 이상의 밀접하게 관련된 컨테이너를 포함하는 논리적 단위입니다. Kubernetes에서 애플리케이션을 배포할 때 기본적인 구성 요소로 사용됩니다.
- Pod는 컨테이너가 함께 작업할 수 있도록 공동 배치 및 스케줄링을 지원합니다.
- 같은 Pod 내의 컨테이너들은 localhost를 통해 서로 통신할 수 있으며, 동일한 네트워크 네임스페이스와 스토리지 볼륨을 공유합니다.
CLI를 사용한 Pod 생성
kubectl run 명령어를 사용하여 CLI에서 Pod를 생성할 수 있습니다. 예를 들어, nginx 이미지를 사용하는 nginx-pod라는 이름의 Pod를 생성하려면 다음 명령어를 실행합니다:
kubectl run nginx-pod --image=nginx
- Pod가 생성된 후에는 kubectl get pods 또는 kubectl get po 명령어를 사용하여 Pod 목록과 상태를 확인할 수 있습니다.
- 특정 Pod에 대한 자세한 정보를 얻으려면 kubectl describe pod <pod-name> 명령어를 사용할 수 있습니다.
- 더 많은 정보를 보기 위해서는 kubectl get po -o wide 명령어를 사용할 수 있습니다.
- Pod를 삭제하려면 kubectl delete pod <pod-name> 명령어를 실행합니다.
YAML 파일을 사용한 Pod 생성
- YAML 파일을 사용하여 Pods를 생성하는 방법도 있습니다. YAML은 Pod의 원하는 상태를 선언적으로 정의할 수 있는 방법을 제공합니다.
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: my-app
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
- 이 내용을 파일에 저장하고 kubectl create -f my-pod.yaml 명령어로 적용하여 Pod를 생성할 수 있습니다.
Pod YAML 파일의 주요 구성 요소
- apiVersion: Kubernetes API 버전을 지정합니다.
- kind: 리소스 유형을 정의합니다.
- metadata: Pod의 이름, 레이블 등을 포함한 정보를 제공합니다.
- spec: Pod의 원하는 상태와 구성을 정의합니다. 여기에는 컨테이너 정보와 포트 설정 등이 포함됩니다.
기존 Pods 편집
- 기존 Pods를 수정해야 할 때는 Pod 정의 파일을 직접 편집하거나, kubectl edit pod <pod-name> 명령어로 편집할 수 있습니다.
고급 Pod 생성 기술
- --dry-run=client 플래그를 사용하여 실제로 Pods를 생성하지 않고 YAML 템플릿을 생성할 수 있습니다.
모범 사례 및 팁
- Pod YAML 파일은 버전 관리 시스템에 저장하여 변경 기록을 유지하고 협업을 용이하게 합니다.
- 실행 중인 Pods를 직접 수정하지 말고, 정의 파일을 수정한 후 재생성하는 것이 좋습니다.
- 애플리케이션 업데이트 및 롤아웃 시 Kubernetes의 Deployment 기능을 활용하세요.
https://hyanghope.tistory.com/571
[CKA 도전기] Kubernetes 시작하기 - Pods
오늘부터 CKA 자격증을 따기위해 개인적으로 쿠버네티스를 공부하고 기록을 남기는 용으로 블로그를 씁니다 참고자료는 현재는 시작하세요 도커/쿠버네티스 책입니다 마스터 노드와 워커노드
hyanghope.tistory.com
https://dev.to/lloydrivers/cka-full-course-2024-day-740-pod-in-kubernetes-explained-5b83
CKA Full Course 2024: Day 7/40 Pod in Kubernetes Explained
At the core of Kubernetes is the Pod. Think of a Pod as a wrapper for one or more containers, where...
dev.to
https://inspirit941.tistory.com/403
CKA 대비 kubernetes 스터디 - 1. Core Concept
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/ Cluster Architecture kubernetes의 목적은 host your application in the form of containers in an automated fashion. 따라서 많은 수의 container 기반 애플리케
inspirit941.tistory.com
https://kanzal.com/kubernetes-pods/
Kubernetes Pods: A Guide to Creating and Managing Pods
Kubernetes, the popular container orchestration platform, offers powerful tools for deploying and managing containerized applications. At the core of
kanzal.com
'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글
Kubernetes Replication Controller와 Replica Set (0) | 2024.12.30 |
---|---|
Kubernetes Pods 요약 (0) | 2024.12.30 |
Kube-Proxy (0) | 2024.12.12 |
Kubelet (1) | 2024.12.12 |
Kube-Scheduler (0) | 2024.12.12 |