일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- paper review
- 웹 프로그래밍
- k8s
- numpy
- 데이터베이스
- pytorch
- Python
- GUI
- yaml
- Computer Vision
- Web Programming
- vue.js
- Docker
- 컴퓨터 비전
- Tkinter
- Deep Learning
- 딥러닝
- Django
- 텐서플로우
- 파이썬
- OpenCV
- kubernetes
- FLASK
- tensorflow
- 그래픽 유저 인터페이스
- 논문 리뷰
- POD
- MariaDB
- 장고
- 파이토치
- Today
- Total
Maxima's Lab
[Kubernetes] YAML 파일 작성하는 방법 (Pod, Deployment, Service, ConfigMap, Secret, PVC) 본문
[Kubernetes] YAML 파일 작성하는 방법 (Pod, Deployment, Service, ConfigMap, Secret, PVC)
Minima 2024. 3. 2. 23:26안녕하세요, 오늘은 쿠버네티스에서 YAML 파일 작성하는 방법에 대해서 알아보겠습니다.
YAML 파일은 리소스의 정의, 구성, 관리를 위해 사용되며, Pod, Deployment, Service 등의 리소스를 생성하고 관리하기 위해 작성 가능합니다.
리소스들의 종류는 다음과 같습니다.
- Pod
- Deployment
- Service
- ConfigMap
- Secret
- PersistentVolumeClasim (PVC)
먼저, Pod에 대해서 설명하겠습니다.
Pod는 하나 이상의 컨테이너를 실행하는 가장 기본적인 배포 단위로써, 컨테이너의 집합이며 네트워크와 Storage 리소스를 공유합니다.
다음과 같이 YAML 파일을 작성할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: example-pod
labels:
app: myapp
spec:
containers:
- name: container-name
image: container-image
ports:
- containerPort: 8080
- apiVersion : 쿠버네티스 API 버전, Pod의 경우 v1
- kind : 리소스 유형
- metadata : 리소스의 이름, 레이블 등 메타데이터를 정의
- spec : Pod가 실행해야할 컨테이너 및 설정 명시
Deployment는 Pod의 선언적 업데이트와 자동 롤아웃을 관리하며, 애플리케이션의 상태를 관리하고 복제본 수를 조절하여 가용성을 보장합니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: container-name
image: container-image
ports:
- containerPort: 8080
- apiVersion : Deployment의 경우 apps/v1
- replicas : 실행할 Pod의 복제본 수
- selector : Deployment가 관리할 Pod를 선택하는데 사용되는 레이블 셀렉터
- template : 생성될 Pod의 Template
Service는 Pod 집합에 대한 안정적인 접근 포인트를 제공하며, Service를 사용하면 Pod를 직접 노출하지 않고도 외부 또는 내부에서 Pod에 접근할 수 있습니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.
apiVersion: v1
kind: Service
metadata:
name: example-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
- selector : Service가 포워딩할 트래픽을 받는 Pod를 결정
- ports : Service가 수신하는 포트와 Pod로 포워딩하는 targetPort를 정의
- type : Sercice 타입 지정함. LoadBalancer는 클라우드 제공자의 로드 밸런서를 사용하여 Pod를 인터넷에 노출
ConfigMap은 구성 데이터를 Key-Value 쌍으로 저장하여 애플리케이션에 전달하는 데 사용됩니다. 애플리케이션 설정, 호스트 이름, 데이터베이스 URL 등을 Pod에 전달할 수 있습니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: example-configmap
data:
key1: value1
key2: value2
- data : 구성 데이터를 Key-Value 쌍으로 저장
Secret은 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 정보를 저장하는데 사용되며, Secret은 ConfigMap과 유사하지만 민간하 정보를 보호하기 위해 사용됩니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.
apiVersion: v1
kind: Secret
metadata:
name: example-secret
type: Opaque
data:
password: cGFzc3dvcmQ=
- data : 민감한 정보를 base64 인코딩된 형태로 저장
PVC는 Storage 리소스를 동적으로 요청하는 방법을 제공하며, PVC를 사용하면 애플리케이션이 필요로 하는 Storage를 추상화하여 사용할 수 있습니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
- accessModes : PVC가 Storage에 접근하는 방식입니다. 예를 들어, ReadWriteOnce는 볼륨을 단일 노드에서 읽기/쓰기 모드로 마운트할 수 있음을 의미
- resources : 요청된 Storage 양을 의미
이상으로, 쿠버네티스에서 YAML 파일을 작성하는 방법에 대해서 알아보았습니다.
감사드립니다.
'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] Container와 POD 개념 설명 및 사용 방법 (0) | 2024.03.02 |