본문 바로가기
Kubernetes (k8s)

[k8s] Deploy & Pod Scale

by moveho 2023. 4. 24.

Deploy


Kubernetes Deploy는 애플리케이션의 배포를 관리하는 컨트롤러입니다. Deploy를 사용하면 컨테이너 이미지, 리소스 요청, 포트 및 레이블과 같은 애플리케이션 구성을 정의할 수 있습니다.
Deploy는 지속적인 배포를 지원하기 때문에, 새로운 버전의 애플리케이션을 배포하거나 업데이트할 때 유용합니다. 새로운 버전의 애플리케이션을 배포할 때, Deploy는 이전 버전의 애플리케이션과 새로운 버전의 애플리케이션을 동시에 유지보수할 수 있습니다. 이를 통해 애플리케이션의 가용성을 유지하면서 업데이트를 수행할 수 있습니다.
Deploy의 구성 파일은 일반적으로 YAML 파일로 작성됩니다. 이 파일은 애플리케이션의 구성을 정의하고, 이를 통해 Deploy 컨트롤러가 애플리케이션을 배포하고 관리할 수 있습니다.

 

Pod Scale


Pod Scale은 Kubernetes에서 애플리케이션의 확장을 관리하는 컨트롤러입니다. Pod Scale을 사용하면 더 많은 인스턴스를 추가하거나 제거하여 애플리케이션의 처리량을 조정할 수 있습니다.
Pod Scale은 수직 및 수평 스케일링을 지원합니다. 수직 스케일링은 인스턴스의 리소스 요청을 변경하여 수행되며, 수평 스케일링은 인스턴스의 수를 조정하여 수행됩니다.
Pod Scale의 구성 파일은 일반적으로 YAML 파일로 작성됩니다. 이 파일은 Pod의 최소 및 최대 인스턴스 수, 인스턴스를 추가 또는 제거하는 방법 등을 정의합니다.

 

 

Example

* TASK:
  ** name: webserver
  ** 2 replicas 
  ** label: app_env_stage=dev
  ** container name: webserver
  ** container images: nginx:1.14

* Scale Out Deployment.
  ** Scale the deployment webserver to 3pods

 

1. Deploy 생성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webserver
spec:
  replicas: 2
  selector:
    matchLabels:
      app_env_stage: dev
  strategy: {}
  template:
    metadata:
      labels:
        app_env_stage: dev
    spec:
      containers:
      - image: nginx:1.14
        name: webserver
        ports:
        - containerPort: 80

2. 확인

root@k8s-master:~/cka30# kubectl get deploy webserver -o wide
NAME        READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES       SELECTOR
webserver   2/2     2            2           27s   webserver    nginx:1.14   app_env_stage=dev

3. Scale out

root@k8s-master:~/cka30# kubectl scale deployment webserver --replicas 3
deployment.apps/webserver scaled

댓글