- 인쇄
- PDF
로드밸런서 연동 가이드
- 인쇄
- PDF
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 서비스 리소스가 삭제됨과 동시에 로드밸런서 인스턴스 또한 삭제됩니다. 해당 작업에는 수 분이 소요될 수 있습니다.