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 |
ロードバランサのネットワークレイヤータイプを設定
|
デフォルト値 nplb |
service.beta.kubernetes.io/ncloud-load-balancer-size |
ロードバランサの負荷処理性能
|
デフォルト値 SMALL |
service.beta.kubernetes.io/ncloud-load-balancer-internal |
プライベートネットワークタイプのロードバランサ作成を設定
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination |
ロードバランサの削除時に割り当てられたパブリック IPアドレスを保存する設定。パブリック IPアドレスが割り当てられたロードバランサにのみ適用
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-description |
作成されるロードバランサインスタンスのメモを入力 | - |
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection |
タイプが LoadBalancerに指定された Serviceを削除する場合、ロードバランサの自動削除を防止する設定
|
デフォルト値 "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の証明書番号
|
- |
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 |
service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol |
プロキシプロトコルの有効化有無
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code |
Algorithmタイプに Round Robin(RR)、Source Ip Hash(SIPHS)、Least Connection(LC)の中から1つを設定可能
|
デフォルト値 RR |
service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update |
ACGアップデートの設定有無
|
デフォルト値 "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
|
service.beta.kubernetes.io/ncloud-load-balancer-size |
ロードバランサの負荷処理性能
|
デフォルト値 DYNAMIC
|
service.beta.kubernetes.io/ncloud-load-balancer-internal |
プライベートネットワークタイプのロードバランサ作成を設定
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination |
ロードバランサの削除時に割り当てられたパブリック IPアドレスを保存する設定。パブリック IPアドレスが割り当てられたロードバランサにのみ適用
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-description |
作成されるロードバランサインスタンスのメモを入力 | - |
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection |
タイプが LoadBalancerに指定された Serviceを削除する場合、ロードバランサの自動削除を防止する設定
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-inbound-source |
ACGルールの Inboundアクセスソースとして使用する値
|
デフォルト値 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つを設定可能
|
デフォルト値 MH |
service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update |
ACGアップデートの設定有無
|
デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-sticky-session |
Sticky Sessionの設定有無
|
デフォルト値 "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機能を無効化
|
デフォルト値 "false" |
ロードバランサの Subnetタイプに応じたパブリックとプライベート IPアドレスの割り当て方式
ロードバランサ Subnetは Public Subnetと Private Subnetの2つのタイプがあり、パブリック 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が必要です。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 |
|
| Service削除中 |
|
pauseは既に作成された NCloud LB/TGを保存するためのオプションです。pauseステータスでは欠落した Load Balancerリソースを新しく作成しません。変更反映を再開するには、入力リソースで pauseアノテーションを削除します。
インスタンス削除
LoadBalancerタイプで作成した Kubernetesサービスを削除すると、連携された Load Balancerインスタンスが自動的に一緒に削除されます。削除する方法は、次の通りです。
- 以下のコマンドを実行して作成された Kubernetesサービスを確認します。
- 結果値の TYPE列で各サービスのタイプを確認できます。
$ kubectl --kubeconfig $KUBE_CONFIG get service
- 以下のコマンドを実行して LoadBalancerタイプのサービスを削除します。
$ kubectl --kubeconfig $KUBE_CONFIG delete service my-nginx