로드밸런서 연동 가이드
    • PDF

    로드밸런서 연동 가이드

    • PDF

    Article Summary

    Classic 환경에서 이용 가능합니다.

    Kubernetes의 서비스를 통한 로드밸런서 연동

    네이버 클라우드 플랫폼의 Ncloud Kubernetes Service는 Kubernetes 서비스 생성 시 타입을 LoadBalancer로 지정한 경우, 로드밸런서 인스턴스를 자동으로 생성합니다.
    로드밸런서의 설정은 서비스 매니페스트(Manifest)의 어노테이션(Annotation)을 통해 지원합니다.

    다음의 로드밸런서 설정을 위한 어노테이션들을 제공합니다.

    설정 값설명비고
    service.beta.kubernetes.io/ncloud-load-balancer-backend-protocol로드밸런서 프로토콜
    다음의 값 중 하나 선택: tcp, http, https, ssl
    기본값 tcp
    service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol프록시 프로토콜 활성화 여부
    다음의 값 중 하나 선택: true/false
    로드밸런서 프로토콜의 값이 ssl 혹은 tcp로 선택되어 있을 때 유효함
    service.beta.kubernetes.io/ncloud-load-balancer-internal사설 네트워크 타입의 로드밸런서 생성 설정
    다음의 값 중 하나 선택: true/false
    기본값 false
    service.beta.kubernetes.io/ncloud-load-balancer-ssl-cert로드밸런서 프로토콜이 https 혹은 ssl일 때 listener 구성을 위한 SSL Certificate 이름Certificate Manager에 등록되어 있는 인증서 이름을 입력
    service.beta.kubernetes.io/ncloud-load-balancer-ssl-ports로드밸런서 인스턴스가 https 혹은 ssl 프로토콜일 때, 추가적으로 인스턴스에 할당될 포트 입력
    ','로 구분하여 입력
    입력 예: 443,6443
    service.beta.kubernetes.io/ncloud-load-balancer-l7-healthcheck-path로드밸런서 프로토콜이 http 혹은 https일 때, L7 Healthcheck를 위한 Path기본값 '/'
    service.beta.kubernetes.io/ncloud-load-balancer-description생성될 로드밸런서 인스턴스에 대한 메모 입력
    service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type로드밸런싱 알고리즘.
    다음의 값 중 하나 선택: RR(ROUND ROBIN), LC(LEAST_CONNECTION), SIPHS(Source IP Hash)
    기본값 RR
    service.beta.kubernetes.io/ncloud-load-balancer-termination-protection타입이 LoadBalancer로 지정된 Service 제거 시, 로드밸런서 자동 제거 방지 옵션기본값 false
    참고

    Client의 IP를 확인하고자 하는 경우에는 service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol의 값을 true로 선언합니다. 자세한 내용은 [Ingress 튜토리얼]의 참고사항을 참조해 주십시오.

    로드밸런서 인스턴스 생성

    Kubernetes의 서비스를 통해 로드밸런서 인스턴스를 생성하려면, 서비스 매니페스트의 타입을 다음과 같이 지정합니다.

    "type": "LoadBalancer"
    

    아래는 해당 타입이 적용된 yaml 설정 파일 예제입니다.
    사설 네트워크 타입의 로드밸런서 인스턴스를 생성하기 위한 어노테이션이 추가되었음을 확인합니다.

    kind: Service
    apiVersion: v1
    metadata:
      name: example-service
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-internal: "true"
    spec:
      ports:
      - port: 8765
        targetPort: 9376
      selector:
        app: example
      type: LoadBalancer
    

    위의 내용을 nks-lb.yml로 만들고, kubectl apply -f nks-lb.yml을 통해 배포하면, 네이버 클라우드 플랫폼의 로드밸런서 인스턴스가 자동으로 생성됩니다.
    생성에는 수 분이 소요될 수 있습니다.

    생성된 로드밸런서 인스턴스의 사설 IP 주소를 확인하기 위해서는 아래의 명령어를 이용합니다. IP 주소는 EXTERNAL-IP 열에서 확인할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG get svc example-service
    NAME              TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)          AGE
    example-service   LoadBalancer   172.16.101.104   10.39.10.118   8765:30365/TCP   2m11s
    

    kubectl expose 명령을 이용한 로드밸런서 인스턴스 생성

    앞서 언급한 방법 외에도, kubectl expose 명령어와 --type=LoadBalancer 플래그를 이용하여 로드밸런서 인스턴스를 생성할 수 있습니다.

    로드밸런서 인스턴스 생성 예제를 위해 아래와 같은 명령어를 이용하여, my-nginx 이름을 가지는 Deployment를 배포합니다. 해당 배포를 통해 Nginx 파드를 구동할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG create deployment --image nginx my-nginx
    

    아래의 명령어를 이용하여 로드밸런서 인스턴스를 생성할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG expose deployment my-nginx --port=80 --type=LoadBalancer
    

    로드밸런서 인스턴스 삭제하기

    로드밸런서 타입으로 생성된 kubernetes 서비스 리소스는 자동으로 생성된 네이버 클라우드 플랫폼의 로드밸런서(Load Balancer) 인스턴스와 연동됩니다.
    kerbernetes에서 해당 타입의 서비스를 삭제하는 경우, 자동으로 로드밸런서 인스턴스 또한 제거됩니다.

    아래의 명령어들을 통해 생성된 서비스를 확인할 수 있습니다. 서비스들에 대한 타입은 TYPE 열에서 확인할 수 있습니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG get service
    NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    my-nginx     LoadBalancer   172.16.188.167   slb-904582.ncloudslb.com     80:32681/TCP   21s
    

    로드밸런서 타입의 kubernetes 서비스 리소스를 삭제하기 위해 다음의 명령어를 이용합니다.

    $ kubectl --kubeconfig=$KUBE_CONFIG delete service my-nginx
    service "my-nginx" deleted
    

    kubernetes 서비스 리소스가 삭제됨과 동시에 로드밸런서 인스턴스 또한 삭제됩니다. 해당 작업에는 수 분이 소요될 수 있습니다.


    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.