--- title: "Load Balancer 인스턴스 연동" slug: "k8s-k8suse-loadbalancer" tags: ["Load Balancer", "Ncloud Kubernetes Service(VPC)"] updated: 2026-09-17T09:07:35Z published: 2026-09-17T09:07:35Z canonical: "guide.ncloud-docs.com/k8s-k8suse-loadbalancer" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Load Balancer 인스턴스 연동 VPC 환경에서 이용 가능합니다. Ncloud Kubernetes Service를 이용하기 위해 서비스를 생성할 때, 해당 서비스와 연동되는 Load Balancer 인스턴스를 자동으로 생성할 수 있습니다. ## Kubernetes에 연동되는 Load Balancer 인스턴스 관리 주의 - Kubernetes에서 생성된 네이버 클라우드 플랫폼의 Load Balancer는 Kubernetes의 리소스로 관리됩니다. - Load Balancer를 콘솔 또는 API로 직접 수정하면 Kubernetes와 상태 동기화가 정상적으로 이루어지지 않아 예기치 않은 문제가 발생할 수 있습니다. Load Balancer의 설정 변경이 필요한 경우 반드시 Kubernetes 리소스를 수정하는 방식으로 진행해 주십시오. - 콘솔 또는 API를 이용한 직접 변경으로 발생한 문제에는 기술 지원이 제공되지 않습니다. - 한 번 생성된 Load Balancer의 타입은 변경할 수 없습니다. ### 인스턴스 생성 Ncloud Kubernetes Service와 연동되는 Load Balancer 인스턴스를 생성하려면 서비스 매니페스트의 타입을 LoadBalancer로 지정한 후, `service.beta.kubernetes.io/ncloud-load-balancer-layer-type` 어노테이션을 nplb 또는 nlb로 설정해 주십시오. - nplb: 네트워크 프록시 로드 밸런서(NPLB) 인스턴스가 생성됩니다. - nlb: 네트워크 로드 밸런서(NLB) 인스턴스가 생성됩니다. ### 인스턴스 속성 설정 서비스 매니페스트의 어노테이션을 통해 생성되는 인스턴스의 속성을 설정할 수 있습니다. 인스턴스의 속성을 설정하려면 인스턴스를 생성할 때 다음의 표를 참조하여 metadata.annotations 값을 입력해 주십시오. - 네트워크 프록시 로드 밸런서(NPLB) | 어노테이션 | 설명 | 비고 | | --- | --- | --- | | `service.beta.kubernetes.io/ncloud-load-balancer-layer-type` | 로드 밸런서 네트워크 레이어 타입 설정 - 다음 값 중 하나를 선택: nplb, nlb | 기본값 nplb | | `service.beta.kubernetes.io/ncloud-load-balancer-size` | 로드 밸런서 부하 처리 성능 - 다음 값 중 하나를 선택: SMALL, MEDIUM, LARGE, XLARGE | 기본값 SMALL | | `service.beta.kubernetes.io/ncloud-load-balancer-internal` | 사설 네트워크 타입의 로드 밸런서 생성 설정 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination` | 로드 밸런서 제거 시 할당된 공인 IP를 보존하는 설정. 공인 IP가 할당된 로드 밸런서에만 적용 - 다음 값 중 하나를 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-description` | 생성될 로드 밸런서 인스턴스 메모 입력 | - | | `service.beta.kubernetes.io/ncloud-load-balancer-termination-protection` | 타입이 LoadBalancer로 지정된 Service 제거 시 로드 밸런서 자동 제거 방지 설정 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-subnet-id` | 로드 밸런서 생성을 위한 로드 밸런서 전용 서브넷의 ID 값 | 기본값으로 kube-system내의 ncloud-config 이름의 ConfigMap 내 lbSubnetNo 사용 | | `service.beta.kubernetes.io/ncloud-load-balancer-ssl-certificate-no` | 프로토콜이 TLS인 리스너에 적용할 Certificate Manager의 인증서 번호 - 인증서 번호는 Resource Manager의 nrn에서 확인 가능(예: nrn:PUB:CertificateManager::000:Certificate/External/${certificateNo}) | - | | `service.beta.kubernetes.io/ncloud-load-balancer-tls-ports` | TLS를 적용할 포트 목록(예: `"443,6443"`) | 기본값 `"443"`, 쉼표로 구분된 값 사용 가능 | | `service.beta.kubernetes.io/ncloud-load-balancer-tls-min-version` | TLS 최소 지원 버전 유형 코드 - 다음 값 중 하나 선택: TLSV10, TLSV11, TLSV12, TLSV13 | 기본값 TLSV10 | | `service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol` | 프록시 프로토콜 활성화 여부 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code` | Algorithm 타입으로 Round Robin(RR), Source Ip Hash(SIPHS), Least Connection(LC) 중 하나를 설정 가능 - 다음 값 중 하나 선택: RR, SIPHS, LC | 기본값 RR | | `service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update` | ACG 업데이트 설정 유무 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-idle-timeout` | 로드 밸런서의 Idle Timeout 설정(1~3600) | 기본값 60 | | `service.beta.kubernetes.io/ncloud-load-balancer-cipher-suite-list` | 리스너에서 지원하는 Cipher Suite 목록(예: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) | 기본값 리스너에서 지원하는 모든 cipher suite | | `service.beta.kubernetes.io/ncloud-load-balancer-listener-acl-id.{port}` | 리스너에 지정할 ACL ID | - | | `service.beta.kubernetes.io/ncloud-load-balancer-healthcheck-port.{port}` | 특정 리스너 포트에 대해 헬스체크에 사용할 서비스 포트를 지정 | - | | `service.beta.kubernetes.io/ncloud-load-balancer-healthcheck-interval-seconds.{port}` | 특정 리스너 포트에 대해 헬스체크 주기를 초 단위로 지정 | 미지정 시 기본값 `30` | | `service.beta.kubernetes.io/ncloud-load-balancer-healthy-threshold-count.{port}` | 특정 리스너 포트에 대해 헬스체크 성공 임계 횟수를 지정 | 미지정 시 기본값 `2` | | `service.beta.kubernetes.io/ncloud-load-balancer-unhealthy-threshold-count.{port}` | 특정 리스너 포트에 대해 헬스체크 실패 임계 횟수를 지정 | 미지정 시 기본값 `2` | - 네트워크 로드 밸런서(NLB) | 어노테이션 | 설명 | 비고 | | --- | --- | --- | | `service.beta.kubernetes.io/ncloud-load-balancer-layer-type` | 로드 밸런서 네트워크 레이어 타입 설정 - 다음 값 중 하나 선택: nplb, nlb | 기본값 nplb - 네트워크 로드 밸런서를 생성하려면 nlb 입력 | | `service.beta.kubernetes.io/ncloud-load-balancer-size` | 로드 밸런서 부하 처리 성능 - 다음 값 중 하나 선택: SMALL, MEDIUM, LARGE, DYNAMIC | 기본값 DYNAMIC - 신규 생성 시 DYNAMIC만 설정 가능 - DYNAMIC 타입이 아니면, 일부 로드 밸런서에 한해 DYNAMIC 어노테이션 적용 시 DYNAMIC 타입으로 변경 가능 - DYNAMIC 타입에서 다른 타입으로 변경 불가능 | | `service.beta.kubernetes.io/ncloud-load-balancer-internal` | 사설 네트워크 타입의 로드 밸런서 생성 설정 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination` | 로드 밸런서 제거 시 할당된 공인 IP를 보존하는 설정. 공인 IP가 할당된 로드 밸런서에만 적용 - 다음 값 중 하나를 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-description` | 생성될 로드 밸런서 인스턴스 메모 입력 | - | | `service.beta.kubernetes.io/ncloud-load-balancer-termination-protection` | 타입이 LoadBalancer로 지정된 Service 제거 시 로드 밸런서 자동 제거 방지 설정 - 다음 값 중 하나를 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-inbound-source` | ACG 규칙의 Inbound 접근 소스로 사용할 값 - 예: 119.194.195.143/32,143.248.12.77/32 | 기본값 0.0.0.0/0 | | `service.beta.kubernetes.io/ncloud-load-balancer-subnet-id` | 로드 밸런서 생성을 위한 로드 밸런서 전용 서브넷의 ID 값 | 기본값으로 kube-system 내의 ncloud-config 이름의 ConfigMap 내 lbSubnetNo 사용 | | `service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code` | Algorithm 타입으로 Hash(MH), Round Robin(RR) 중 하나를 설정 가능 - 다음 값 중 하나 선택: MH, RR | 기본값 MH | | `service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update` | ACG 업데이트 설정 유무 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-sticky-session` | Sticky Session 설정 유무 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | | `service.beta.kubernetes.io/ncloud-load-balancer-listener-acl-id.{port}` | 리스너에 지정할 ACL ID | - | | `service.beta.kubernetes.io/ncloud-load-balancer-healthcheck-port.{port}` | 특정 리스너 포트에 대해 헬스체크에 사용할 서비스 포트를 지정 | - | | `service.beta.kubernetes.io/ncloud-load-balancer-healthcheck-interval-seconds.{port}` | 특정 리스너 포트에 대해 헬스체크 주기를 초 단위로 지정 | 미지정 시 기본값 `30` | | `service.beta.kubernetes.io/ncloud-load-balancer-healthy-threshold-count.{port}` | 특정 리스너 포트에 대해 헬스체크 성공 임계 횟수를 지정 | 미지정 시 기본값 `2` | | `service.beta.kubernetes.io/ncloud-load-balancer-unhealthy-threshold-count.{port}` | 특정 리스너 포트에 대해 헬스체크 실패 임계 횟수를 지정 | 미지정 시 기본값 `2` | | `service.beta.kubernetes.io/ncloud-load-balancer-enable-acl-operator` | ACL 관련 기능을 ACL-operator로 위임 유무. 활성화 시 acl 기능 비활성화 - 다음 값 중 하나 선택: `"true"`, `"false"` | 기본값 `"false"` | #### 로드 밸런서의 Subnet 유형에 따른 공인 및 사설 아이피 할당 방식 로드 밸런서 Subnet은 **Public Subnet**과 **Private Subnet** 두 가지 유형이 있으며, 공인 IP와 사설 IP가 부여된 로드 밸런서를 생성하려면 각각의 유형이 필요합니다. 로드 밸런서를 생성하면 kube-system 네임스페이스의 ncloud-config ConfigMap에 정의된 `lbPublicSubnetNo`, `lbSubnetNo` 필드의 Subnet ID가 사용됩니다. 다른 Subnet을 사용하려면 `service.beta.kubernetes.io/ncloud-load-balancer-subnet-id` 어노테이션에 원하는 Subnet ID를 지정합니다. **1. Public Subnet(Internet Gateway 전용)** 공인 IP가 부여된 로드 밸런서를 생성하려면 Public Subnet이 필요합니다. 네이버 클라우드 플랫폼 콘솔 VPC 환경에서 **Menu** > **All Services** > **Networking** > **VPC** > **Public IP** 메뉴를 차례대로 클릭해 공인 IP를 신청한 후 로드 밸런서에 할당합니다. 공인 IP를 지정하지 않으면 신규 공인 IP가 자동으로 신청됩니다. **2. Private Subnet** 사설 IP가 할당된 로드 밸런서를 VPC 내부에 생성하려면 Private Subnet이 필요합니다. #### 멀티존 Subnet ID 지정 멀티존 클러스터에서 네트워크 프록시 로드 밸런서(NPLB)를 생성하는 경우, 각 존의 로드 밸런서 전용 Subnet ID를 `service.beta.kubernetes.io/ncloud-load-balancer-subnet-id` 어노테이션에 입력할 수 있습니다. 멀티존 클러스터에서 NPLB Subnet ID를 지정하는 경우, 다음 내용을 참고해 주십시오. - 2개 이상 입력 시 쉼표(,)로 구분합니다. - 각 존마다 로드 밸런서 전용 서브넷을 1개만 지정할 수 있습니다. - 같은 존에 속한 Subnet ID를 2개 이상 입력하면 로드 밸런서 생성에 실패합니다. - `subnet-id` 값은 로드 밸런서를 생성할 때만 적용됩니다. 생성된 로드 밸런서의 서브넷을 변경하려면 로드 밸런서를 다시 생성해 주십시오. - 멀티존 서브넷 지정은 NPLB에서만 지원됩니다. 네트워크 로드 밸런서(NLB)는 멀티존 서브넷 지정을 지원하지 않습니다. - 멀티존 서브넷을 지정하는 경우 공인 IP를 지정하여 할당할 수 없습니다. ``` metadata: annotations: service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb" service.beta.kubernetes.io/ncloud-load-balancer-subnet-id: "123456,234567" ``` ### 인스턴스 속성 설정 예제 인스턴스 속성 설정에 대한 자세한 예제는 [Load Balancer 속성 설정 예제](/docs/k8s-k8sexamples-loadbalancer)를 참조해 주십시오. ### 생성된 로드 밸런서 인스턴스의 External IP 확인 생성된 인스턴스의 external IP를 확인하려면 다음 명령어를 실행해 주십시오. ``` $ kubectl --kubeconfig $KUBE_CONFIG get svc example-service ``` EXTERNAL-IP 열에 해당 인스턴스의 external 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 ``` ### 로드 밸런서 관리 일시 중지 `lb.ncloud.naver.com/pause: "true"`는 Kubernetes 1.36 이상 KVM 클러스터에서 사용할 수 있는 일시 중지 옵션입니다. 이 값이 설정되면 컨트롤러의 spec/provider reconcile이 일시 중지됩니다. | 적용 대상 | 동작 | | --- | --- | | Service | - pause 중에는 Service 변경이 Load Balancer 설정에 미반영 - pause 상태에서 Service를 삭제해도 이미 생성된 NCloud LB/TG는 삭제하지 않고 유지 | | Service 삭제 중 | - pause가 설정되어 있으면 `service.kubernetes.io/load-balancer-cleanup` finalizer를 제거하고 NCloud LB/TG 정리를 기다리지 않음 | 주의 pause는 이미 생성된 NCloud LB/TG를 보존하기 위한 옵션입니다. pause 상태에서는 누락된 Load Balancer 리소스를 새로 생성하지 않습니다. 변경 반영을 재개하려면 입력 리소스에서 pause 어노테이션을 제거해 주십시오. ### 인스턴스 삭제하기 LoadBalancer 타입으로 생성된 Kubernetes 서비스를 삭제하면 연동된 Load Balancer 인스턴스가 자동으로 함께 삭제됩니다. 삭제하는 방법은 다음과 같습니다. 1. 다음 명령어를 실행하여 생성된 Kubernetes 서비스를 확인해 주십시오. - 결과 값의 TYPE 열에서 각 서비스의 타입을 확인할 수 있습니다. ``` $ kubectl --kubeconfig $KUBE_CONFIG get service ``` 1. 다음 명령어를 실행하여 LoadBalancer 타입의 서비스를 삭제해 주십시오. ``` $ kubectl --kubeconfig $KUBE_CONFIG delete service my-nginx ```