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 Cloud 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を適用するポートリスト。e.g. "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 -
  • ネットワークロードバランサ(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} 特定のリスナーポートに対してヘルスチェックに使用するポートを指定 -

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

ロードバランサ Subnetには Public Subnetと Private Subnetの2つのタイプがあります。各タイプは、パブリックとプライベート IPアドレスが付与されたロードバランサを作成するために必要です。ロードバランサを作成する際、kube-system名前空間内の ncloud-config ConfigMapで定義された lbPublicSubnetNoと lbSubnetNoフィールドにある Subnet IDを使用します。この Subnet IDはロードバランサを作成する時、service.beta.kubernetes.io/ncloud-load-balancer-subnet-id annotationを利用して他の Subnet IDを使うように指定できます。

1. Public Subnet(Internet Gateway専用)
パブリック IPアドレスが付与されたロードバランサを作成するには、Public Subnetが必要です。NAVERクラウドプラットフォームコンソール VPC環境の i_menu > Services > Networking > VPC > Public IPメニューからパブリック IPアドレスを申し込み、これをロードバランサに割り当てることができます。パブリック IPアドレスを指定しないと、新規パブリック IPアドレスが申し込まれます。

2. Private Subnet
VPC内でロードバランサをプライベート IPアドレスが割り当てられた Private Subnetに作成するには、そのサブネットが必要です。

インスタンスプロパティ設定のユースケース

インスタンスのプロパティ設定に関するユースケースは、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

インスタンス削除

LoadBalancerタイプで作成した Kubernetesサービスを削除すると、連携された Load Balancerインスタンスが自動的に一緒に削除されます。
LoadBalancerタイプで作成した Kubernetesサービスを確認して削除する方法は、次の通りです。

  1. 以下のコマンドを実行して作成された Kubernetesサービスを確認します。
  • 結果値の TYPE列で各サービスのタイプを確認できます。
$ kubectl --kubeconfig $KUBE_CONFIG get service
  1. 下記のコマンドを実行して LoadBalancerタイプのサービスを削除します。
$ kubectl --kubeconfig $KUBE_CONFIG delete service my-nginx