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 インスタンスの連携

Prev Next

VPC環境で利用できます。

Ncloud Kubernetes Serviceを利用するためにサービスを作成する際、そのサービスと連携する Load Balancerインスタンスを自動的に作成できます。

Kubernetesと連携する Load Balancerインスタンスの管理

注意
  • Kubernetesで作成された NAVERクラウドプラットフォームの 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 ロードバランサのネットワークレイヤータイプを設定
  • 次の値の中から1つ選択: nplb, nlb
デフォルト値 nplb
service.beta.kubernetes.io/ncloud-load-balancer-size ロードバランサの負荷処理性能
  • 次の値の中から1つ選択: SMALL、MEDIUM、LARGE、XLARGE
デフォルト値 SMALL
service.beta.kubernetes.io/ncloud-load-balancer-internal プライベートネットワークタイプのロードバランサ作成を設定
  • 次の値の中から1つを選択: "true""false"
デフォルト値 "false"
service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination ロードバランサの削除時に割り当てられたパブリック IPアドレスを保存する設定。パブリック IPアドレスが割り当てられたロードバランサにのみ適用
  • 次の値の中から1つ選択: "true""false"
デフォルト値 "false"
service.beta.kubernetes.io/ncloud-load-balancer-description 作成されるロードバランサインスタンスのメモを入力 -
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection タイプが LoadBalancerに指定された Serviceを削除する場合、ロードバランサの自動削除を防止する設定
  • 次の値の中から1つを選択: "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最小サポートバージョンタイプコード
  • 次の値の中から1つを選択: TLSV10, TLSV11, TLSV12, TLSV13
デフォルト値 TLSV10
service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol プロキシプロトコルの有効化有無
  • 次の値の中から1つを選択: "true""false"
デフォルト値 "false"
service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code Algorithmタイプに Round Robin(RR)、Source Ip Hash(SIPHS)、Least Connection(LC)の中から1つを設定可能
  • 次の値の中から1つを選択: RR、SIPHS、LC
デフォルト値 RR
service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update ACGアップデートの設定有無
  • 次の値の中から1つを選択: "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 ロードバランサのネットワークレイヤータイプを設定
  • 次の値の中から1つを選択: nplb, nlb
デフォルト値 nplb
  • ネットワークロードバランサを作成するには nlbを入力
service.beta.kubernetes.io/ncloud-load-balancer-size ロードバランサの負荷処理性能
  • 次の値の中から1つを選択: SMALL、MEDIUM、LARGE、DYNAMIC
デフォルト値 DYNAMIC
  • 新規作成時に DYNAMICのみ設定可能
  • DYNAMICタイプでない場合、一部のロードバランサに限って DYNAMICアノテーションの適用時に DYNAMICタイプに変更可能
  • DYNAMICタイプから他のタイプに変更不可
service.beta.kubernetes.io/ncloud-load-balancer-internal プライベートネットワークタイプのロードバランサ作成を設定
  • 次の値の中から1つを選択: "true""false"
デフォルト値 "false"
service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination ロードバランサの削除時に割り当てられたパブリック IPアドレスを保存する設定。パブリック IPアドレスが割り当てられたロードバランサにのみ適用
  • 次の値の中から1つ選択: "true""false"
デフォルト値 "false"
service.beta.kubernetes.io/ncloud-load-balancer-description 作成されるロードバランサインスタンスのメモを入力 -
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection タイプが LoadBalancerに指定された Serviceを削除する場合、ロードバランサの自動削除を防止する設定
  • 次の値の中から1つ選択: "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)の中から1つを設定可能
  • 次の値の中から1つを選択: MH, RR
デフォルト値 MH
service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update ACGアップデートの設定有無
  • 次の値の中から1つを選択: "true""false"
デフォルト値 "false"
service.beta.kubernetes.io/ncloud-load-balancer-sticky-session Sticky Sessionの設定有無
  • 次の値の中から1つを選択: "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機能を無効化
  • 次の値の中から1つを選択: "true""false"
デフォルト値 "false"

ロードバランサの Subnetタイプに応じたパブリックとプライベート IPアドレスの割り当て方式

ロードバランサ Subnetは Public SubnetPrivate Subnetの2つのタイプがあり、パブリック IPアドレスとプライベート IPアドレスが付与されたロードバランサを作成するには、各々のタイプが必要です。

ロードバランサを作成すると、kube-system名前空間の ncloud-config ConfigMapに定義されたlbPublicSubnetNolbSubnetNoフィールドの Subnet IDが使用されます。他の Subnetを使用するには、service.beta.kubernetes.io/ncloud-load-balancer-subnet-idアノテーションに希望する Subnet IDを指定します。

1.Public Subnet(Internet Gateway専用)
パブリック IPアドレスが付与されたロードバランサを作成するには Public Subnetが必要です。NAVERクラウドプラットフォームコンソール 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プロパティ設定のユースケースをご参照ください。

作成されたロードバランサインスタンスの 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