ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쿠버네티스 디플로이먼트 서비스 | Kubernetes Deployment Service 정리 cmd
    [데이터베이스] 2021. 1. 10. 20:19
    728x90
    반응형

     

     

    이 글은 위키북스 「시작하세요! 도커/쿠버네티스」 6장의 내용을 정리한 글입니다.

     

     

    앞선 내용

    포드와 레플리카셋

     

    쿠버네티스 포드 레플리카셋 | Kubernetes Pod Replicaset 정리 cmd

    이 글은 위키북스 「시작하세요! 도커/쿠버네티스」 6장의 내용을 정리한 글입니다. Docker for Windows에서 실행 쿠버네티스는 도커에 내장된 기능이 아님 컨테이너를 사용하기 위해 쿠버네티스가

    scarlettb.tistory.com

     

     


    Deployment 디플로이먼트

    실제 쿠버네티스 운영 환경에서 레플리카셋을 YAML 파일에서 사용하는 경우는 없음

     

    레플리카셋과 포드의 정보를 정의하는 디플로이먼트 오브젝트를 YAML 파일에 정의해 사용

     

    레플리카셋의 상위 오브젝트

    디플로이먼트를 생성하면 해당 디플로이먼트에 대응하는 레플리카셋도 함께 생성됨

     

     

    deployment-nginx.yaml

     

     

    디플로이먼트 사용 이유

    애플리케이션의 업데이트와 배포를 더욱 편하게 만들기 위해서

    디플로이먼트는 컨테이너 애플리케이션을 배포하고 관리하는 역할

    애플리케이션을 업데이트 할 때 레플리카셋의 변경사항을 저장하는 리비젼(revision)을 남겨 롤백을 가능하게 함

     

     


    쿠버네티스는 디플로이먼트를 생성할 때 포드를 외부로 노출하지 않음

     

    디플로이먼트의 YAML파일에는 단지 포드의 애플리케이션이 사용할 내부 포트만 정의 =containerPort

     

    서비스 Service

    containerPort를 외부로 노출해 사용자들이 접근하거나, 다른 디플로이먼트의 포드들이 내부적으로 접근하는데 필요한 쿠버네티스 오브젝트

    포드에 어떻게 접근할 것인가에 따라 종류가 세분화

     

    기능

    여러 개의 포드에 쉽게 접근할 수 있도록 고유한 도메인 이름 부여

    여러 개의 포드에 접근할 때, 요청을 분산하는 로드 밸런서 기능 수행

    클라우드 플랫폼의 로드 밸런서, 클러스터 노드의 포트 등을 통해 포드를 외부로 노출

     

     

    ClusterIP 타입: 쿠버네티스 내부에서만 포드들에 접근할 때 사용

     

    NodePort 타입: 포드에 접근할 수 있는 포트를 클러스터의 모든 노드에 동일하게 개방, 외부에서 포드에 접근 가능

     

    LoadBalancer 타입: 클라우드 플랫폼에서 제공하는 로드 밸런서를 동적으로 프로비저닝해 포드에 연결 , 외부에서 포드에 접근 가능, 클라우드 플랫폼 환경에서만 사용 가능

     


    ClusterIP 타입

    hostname-svc-clusterip.yaml

     

     

     


     

    NodePort 타입

    모든 노드의 특정 포트를 개방해 서비스에 접근하는 방식

     

     

    hostname-svc-nodeport.yaml

     

     

     

    NodePort 타입은 ClusterIP의 기능을 포함

     

    클러스터 서비스의 내부 IP와 DNS 이름을 사용해 접근 가능

     

    내부 네트워크와 외부 네트워크 양쪽에서 접근 가능

     

     

     


    LoadBalancer 타입

    hostname-svc-lb.yaml

     

     

    클라우드 플랫폼으로부터 도메인 이름과 IP를 할당 받음

     

    로드밸런서를 동적으로 생성하는 기능을 제공하는 환경에서만 사용 가능

    일반적으로 AWS, GCP 같은 클라우드 플랫폼 환경에서만 사용 가능

     

    로드 밸런싱: 요청이 여러 개의 포드로 분산되는 기능

     


     

    externalTrafficPolicy

    외부에서 들어온 요청은 각 노드 중 하나로 보내지며, 그 노드에서 다시 포드 중 하나로 전달됨

     

    •Cluster:  모든 노드에 랜덤한 포트를 개방, default

    •Local: 포드가 생성된 노드에서만 포드로 접근할 수 있으며 로컬 노드에 위치한 포드 중 하나로 요청이 전달됨, 네트워크 홉 발생하지 않음

     


    ExternalName 타입

    쿠버네티스를 외부 시스템과 연동해야 할 때 사용

     

    서비스가 외부 도메인을 가리키도록 설정 가능

     

    쿠버네티스와 별개로 존재하는 레거시 시스템에 연동해야 하는 상황에서 유용하게 사용

     


    external-
    svc.yaml

     

    쿠버네티스 내부의 포드들이 externalname-svc라는 이름으로 요청을 보낼 경우,

    쿠버네티스의 DNS는 my.database.com으로 접근할 수 있도록 CNAME 레코드를 반환

    (Canonical Name 도메인을 가리키는 다른 이름)

     

     

     

    728x90
    반응형

    댓글

S.B. All Rights Reserved.