728x90
반응형
10/24(목) 실습
(실습) Deployment를 이용한 Pod 배포
1. nginx-deploy.yml 파일 생성
nano nginx-deploy.yml 명령어로 파일을 생성한 후 아래와 같이 작성해준다.
# API 버전
apiVersion: apps/v1
# 객체 종류
kind: Deployment
# 객체에 대한 정보를 생성
metadata:
name: nginx-deploy
labels:
app: nginx
spec:
replicas: 2 # 2개의 파드 생성
selector: # Deployment가 관리할 파드를 선택
matchLabels:
app: nginx
template: # 이 정보를 가지고 pod를 생성
metadata:
labels:
app: nginx
spec: # 컨테이너 정보
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
- apiVersion: 사용할 Kubernetes API의 버전을 지정한다.
- kind: 생성할 리소스의 유형을 정의. 현재는 Deployment를 지정하여 애플리케이션을 배포하고 관리할 수 있는 리소스 생성
- metadata: 이 섹션은 리소스에 대한 메타 정보를 포함한다. name은 리소스의 이름을 지정하고, labels은 리소스를 분류할 수 있는 레이블을 정의한다. app:nginx 레이블은 해당 리소스를 nginx 애플리케이션과 연결한다.
- spec: 이 섹션은 Deployment의 내부 정보를 포함한다. replicas는 생성할 파드의 수를 정의하고, selector는 Deployment가 관리할 파드를 선택하는 방법을 정의한다. 여기서는 app: ngnix 레이블을 가진 파드를 선택한다.
- template: 이 섹션은 Deployment가 생성할 파드의 스펙을 정의한다. metadata 에서는 파드에 적용될 레이블을 정의하고, spec에서는 파드에서 실행할 컨테이너를 정의한다.
이 YAML 파일은 nginx 웹 서버를 실행하는 2개의 파드를 생성하고 관리하기 위한 Deployment를 정의한다.
2. yaml 정보를 가지고 파드를 생성
kubectl apply -f nginx-deploy.yml
- 이 명령어를 실행하여, nginx-deploy.yml 파일에 정의된 Deployment가 Kubernetes 클러스터에 적용되고 지정한 대로 파드가 생성된다.
- apply를 사용하여 현재 클러스터의 상태와 비교하여, 변경된 부분만 적용된다.
3. 파드 확인
kubectl get pods
- 현재 클러스터에 있는 모든 파드의 상태 정보를 출력한다. 파드가 정상적으로 실행되고 있는지, 상태는 어떤지를 확인할 수 있다.
- 출력되는 정보에는 파드의 이름, 준비 상태(READY), 전체 인스턴스 수(STATUS), 재시작 수(RESTARTS), 생성된 시간(AGE) 등이 포함된다.
4. 모든 파드 삭제
kubectl delete pods --all
- 현재 클러스태 내의 모든 파드가 삭제된다.
- 파드가 삭제되면 해당 파드가 실행 중이던 컨테이너도 함께 종료된다.
(실습) 결과
위 실습에서 확인한 것과 같이, Deployments로 배포한 Replicas에 설정한 파드의 개수를 유지하려고 한다.
따라서 파드를 삭제하더라도, 자동으로 파드를 다시 생성해서 파드의 개수를 유지한다.
Deployment와 Pods의 차이점
Deployment는?
- 애플리케이션의 상태를 관리하는 Kubernetes 객체로, 설정한 replicas 수에 맞춰 Pods를 생성하고 유지한다.
- 만약 Deployment로 배포된 Pods가 삭제되거나 실패할 경우, Deployment는 자동으로 새로운 Pods를 생성하여 설정된 replicas 수를 유지한다.
- 이를 통해 고가용성과 자동복구를 제공하며, 애플리케이션의 가용성을 보장한다.
Pod는?
- Kubernetes에서 가장 작은 배포 단위로, 컨테이너를 실행하는 기본 객체이다.
- Pods로 직접 생성한 경우, 해당 Pods가 삭제되면 자동으로 복구되지 않는다. 즉, 수동으로 다시 생성해야 하며, 상태가 유지되지 않는다.
- Pods는 단기적이며 보통 일회성 작업이나 임시 작업에 사용된다.
728x90
반응형
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Linux에서 MiniKube를 설치 및 쿠버네티스 실습 (2) | 2024.10.28 |
---|---|
[Kubernetes] ReplicaSet을 이용한 Pods 배포 (5) | 2024.10.25 |
[Kubernetes] 쿠버네티스 네트워크 통신 구조 (0) | 2024.10.24 |
[Kubernetes] 쿠버네티스 서비스: Cluster IP, NodePort, Load Balancer (0) | 2024.10.24 |
[Kubernetes] 쿠버네티스 컨트롤러: Deployment, ReplicaSet, Job, CronJob, DaemonSet (5) | 2024.10.23 |