Azure

[Azure] 쿠버네티스 Pod & Deployment

seolbinzz 2024. 1. 26. 10:26

 

 

Pod

kubernetes의 최소 실행 단위

Pod 내에 실행되는 컨테이너는 동일한 노드에 할당되며 동일한 생명 주기를 가짐

고유의 IP를 할당받고 Pod 안의 컨테이너들은 서로 IP를 공유함

 

 

 

 

1. 사용자가 kubectl 명령어를 통해 Pod 정의를 쿠버네티스 Master에 전달함

2. 쿠버네티스 Master는 YAML 정의의 유효성을 체크 한 후 컨테이너를 실행하도록 명령을 내림

3. 명령을 받은 노드는 실제 컨테이너를 노드에 실행함

 

 

 

Deployment

stateless 앱을 배포할 때 사용되는 가장 기본이 되는 컨트롤러

Pod에 대한 기준 스펙을 정의한 Object이자 성능을 관리하고 Pod의 원하는 동작이나 특성을 지정하는 도구

replicaset을 관리하며 배포를 위한 기능 제공

롤링업데이트, 배포, 중단, 롤백이 가능함

--> 지속적으로 배포된 인스턴스들을 모니터링하기 때문에 노드가 다운되거나 삭제되면 deployment 컨트롤러가 인스턴스를 클러스터 내부의 다른 노드 인스턴스로 교체해준다.

 

 

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  # Deployment 객체의 Unique한 명칭
  name: deployment-example
spec:
  # Deployment label selector for pod
  selector:
    matchLabels:
      app: nginx
  # 3 Pods should exist at all times.
  replicas: 3
  template:
    metadata:
      labels:
        # Pod의 라벨
        app: nginx
    spec:
      containers:
      - name: nginx
        # Run this image
        image: nginx:1.10

 

 

1. apiVersion: apps/v1beta1 : 쿠버네티스의 apiVersion: apps/v1 버전을 사용합니다.

2. kind : Deployment의 작업으로 명시합니다.

3. spec.selector : 어떤 레이블의 파드를 선택하여 관리할지에 대한 설정입니다.

4. spec.replicas : 파드의 갯수를 몇개 유지할 것인지 설정합니다. 기본값은 1

5. spec.template.metadata.labels.app:nginx : 식별하는 레이블이 앱 컨테이너이고, nginx로 식별합니다.