[쿠버네티스] 자원 기반 접근법, 명령 기반 접근법

    728x90
    반응형

    출처

    Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스

    Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy)

     

    접근법

    두 가지의 접근법

    애플리케이션 배포 및 관리 방식과 관련이 있는
    자원 기반 접근법(Declarative Approach)과 명령 기반 접근법(Imperative Approach)이다.

     

    자원 기반 접근법(Declarative Approach)

    상태를 정의하는 방식

    YAML 파일을 사용하여 배포 설정을 정의하고, kubectl apply -f deployment.yaml 명령어로 적용하는 방식

     

    1. 선언적 방식은 변경된 상태를 쉽게 추적하고, 자동으로 복원할 수 있어 안정성이 높다.
    2. 상태가 정의되어 있어 쉽게 관리하고 재사용할 수 있다.

     

    명령 기반 접근법(Imperative Approach)

    구체적인 작업을 명령으로 실행하는 방식

    kubectl create deployment nginx --image=nginx 명령어로 deployment를 직접 생성하는 방식

     

    1. 빠르고 직관적으로 실행할 수 있으며, 작은 변경 사항을 신속하게 처리할 수 있다.
    2. 명령을 통해 리소스를 즉시 수정할 수 있어 유연하다.

    접근법 비교하기

    자원 기반 접근법(Declarative Approach) vs 명령 기반 접근법(Imperative Approach)

    둘 중 어느 방식이 더 나은지에 대한 선택은 프로젝트의 성격과 요구 사항에 따라 다르다.
    대규모 시스템에서는 자원 기반 접근법이 더 유리하고, 작은 작업이나 실험적인 작업에서는 명령 기반 접근법이 빠르고 효율적일 수 있다.

     

    배포방식

    Imperative Create Objects
    kubectl run --image=nginx nginx
    kubectl create deployment --image=nginx nginx
    kubectl expose deployment nginx --port 8080
    Update Objects kubectl edit deployment nginx
    kubectl scale deployment nginx --replicas=5
    kubectl set image deployment nignx nginx=nginx:latest
    Declarative Create & Update kubectl apply -f nginx.yaml

    명령 기반 접근법 팁

    --dry-run 옵션

    #--dry-run 옵션을 사용하면 실제로 자원을 생성하지 않고, 명령어가 실행될 때 리소스가 정상적으로 생성될 수 있는지 확인만 한다.
    #--dry-run=client: 명령을 실행하고, 실제로 자원을 만들지 않으며 클라이언트 측에서만 실행 결과를 확인할 수 있다.
    [root@]$ kubectl run nginx --image=nginx --dry-run=client

     

    -o yaml 옵션

    #-o yaml 옵션을 사용하면 YAML 형식으로 리소스 정의를 출력한다.
    #리소스가 실제로 생성되지 않고, 대신 리소스를 생성할 때 필요한 YAML 파일을 출력할 수 있다.
    [root@]$ kubectl run nginx --image=nginx --dry-run=client -o yaml

     

    728x90
    반응형

    '클라우드 > 쿠버네티스' 카테고리의 다른 글

    [쿠버네티스] 네임스페이스  (0) 2024.11.10
    [쿠버네티스] 서비스  (0) 2024.11.09
    [쿠버네티스] ReplicaSet  (0) 2024.10.27
    [쿠버네티스] ETCD  (0) 2024.09.21
    [쿠버네티스] Container Runtime Interface (CRI)  (0) 2024.09.16

    댓글