Load Balancer プロパティ設定のユースケース
    • PDF

    Load Balancer プロパティ設定のユースケース

    • PDF

    Article Summary

    VPC環境で利用できます。

    Load Balancer インスタンスの連携で紹介した各種アノテーションを活用して Load Balancerインスタンスのプロパティを設定するユースケースです。

    注意

    Kubernetesで作成した NAVERクラウドプラットフォームのロードバランサを Kubernetesの Serviceリソースではなくコンソールと APIを通じて設定する場合、状態の同期に問題が発生する場合があります。作成したロードバランサに関する設定の変更は、必ず Kubernetesで作成した Serviceリソースを修正して行ってください。

    ユースケース

    ロードバランサの作成時に共通して使用できるユースケースです。

    Load Balancer Class選択のユースケース

    Kubernetes 1.27バージョン以降から LoadBalancerClassを指定することができます。LoadBalancerClassを指定することで NAVERクラウドプラットフォームが提供するロードバランサ以外のロードバランサをクラスタで使用できます。これにより、LoadBalancerClassの指定時に Network Load Balancerや Network Proxy Load Balancerは作成されません。サービスの作成後には、割り当てられた External-IPを確認し、外部からアクセスできることを確認する必要があります。下記の例は、loxilbを Load BalancerClassに指定して使用する方法を説明します。

    apiVersion: v1
    kind: Service
    metadata:
      name: my-nginx
      labels:
        app: nginx
    spec:
      selector:
        app: nginx
      ports:
        - port: 8765
          targetPort: 80
      type: LoadBalancer
      loadBalancerClass: "loxilb.io/loxilb"
    

    インスタンスが作成される専用サブネット選択のユースケース

    インスタンスの作成時、kube-systemNamespaceで ncloud-configという名前の configmap内の lbSubnetNoをデフォルトで使用します。他のロードバランサ専用のサブネットにインスタンスを作成する必要がある場合は、service.beta.kubernetes.io/ncloud-load-balancer-subnet-id アノテーションを使用できます。

    以下は、NPLBインスタンスが作成される専用サブネットを選択するユースケースです。

    kind: Service
    apiVersion: v1
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-subnet-id: "452772"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    ロードバランサのパブリック IPアドレス付与のユースケース

    LoadBalancer タイプの Serviceの場合、spec.loadBalancerIP フィールドにロードバランサに割り当てるパブリック IPアドレスを定義できます。当該フィールドには、네이버 클라우드 플랫폼 콘솔 > VPC > Public IP メニューで確認できる未割り当て状態のパブリック IPアドレスのみ記述できます。
    基本的にロードバランサを削除すると、割り当てられたパブリック IPアドレスも一緒に返却されます。パブリック IPアドレスが一緒に返却されないように service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination: "true" annotationを使用できます。

    apiVersion: v1
    kind: Service
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination: "true"
    spec:
      loadBalancerIP: 110.234.194.181
      ports:
        - port: 80
          targetPort: 8080
          protocol: TCP
          name: http
      selector:
        run: nginx
      type: LoadBalancer
    

    プライベートネットワークタイプのロードバランサ作成のユースケース

    service.beta.kubernetes.io/ncloud-load-balancer-internal アノテーションを用いて、VPC内部でのみアクセスできるプライベートタイプのロードバランサを作成できます。このアノテーションのデフォルト値は falseなので、明示的に指定しないとパブリックタイプのロードバランサが作成されます。プライベートタイプのロードバランサは、VPC内部のプライベート IPアドレスを利用して内部サーバ間の負荷を分散処理し、VPC外部からのアクセスは許可されません。

    apiVersion: v1
    kind: Service
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-internal: "true"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    負荷分散アルゴリズム設定のユースケース

    service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-codeアノテーションを用いて、ロードバランサの負荷分散アルゴリズムを設定することができます。Network Proxy LoadBalancerの場合は Round Robin(RR)、Source Ip Hash(SIPHS)、Least Connection(LC)の中から選択でき、Network LoadBalancerの場合は Hash(MH)、Round Robin(RR)の中から選択できます。

    以下は、Network Proxy LoadBalancerを作成しながら、負荷分散アルゴリズムとして Source Ip Hash(SIPHS)を選択する例です。

    apiVersion: v1
    kind: Service
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code: "SIPHS"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    ネットワークプロキシロードバランサ(NPLB)プロパティ設定のユースケース

    ロードバランサの負荷処理性能設定のユースケース

    service.beta.kubernetes.io/ncloud-load-balancer-size アノテーションを用いて作成したロードバランサの負荷処理性能を設定できます。

    以下は、そのアノテーションを用いて負荷処理性能を設定するユースケースです。

    kind: Service
    apiVersion: v1
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-size: "MEDIUM"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    TLS設定のユースケース

    サービス明細を通じて、TLS/SSL証明書をロードバランサに適用できます。Certificate Managerに登録された証明書番号(nrn)をservice.beta.kubernetes.io/ncloud-load-balancer-ssl-certificate-noに指定し、TLSを使用するポート番号を service.beta.service.beta.kubernetes.io/ncloud-load-balancer-tls-portsアノテーションに設定します。以下は、443ポート(HTTPS)に入るトラフィックを暗号化して80ポート(HTTP)に転送するユースケースです。

    kind: Service
    apiVersion: v1
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-ssl-certificate-no: "1234"
        service.beta.kubernetes.io/ncloud-load-balancer-tls-ports: "443"
    spec:
      ports:
        - port: 443
          targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
    

    プロキシプロトコル有効化のユースケース

    service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol アノテーションにより、ロードバランサのプロキシプロトコルを有効にすることができます。プロキシプロトコルは、TCPや SSLプロトコルを使用する際に、プロキシ環境を通じて接続リクエストをするクライアントのソース IPアドレス(Original Client IP address)を知ることができるプロトコルです。この機能を使うためには、ロードバランサだけでなく、接続されたアプリケーション(Pod)でも関連設定をする必要があります。

    kind: Service
    apiVersion: v1
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol: "true"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    ロードバランサ Idle Timeout設定のユースケース

    service.beta.kubernetes.io/ncloud-load-balancer-idle-timeout により、ロードバランサの Idle Timeoutを調整することができます。アプリケーションの Idle Timeoutを考慮して調整する必要があり、ロードバランサのデフォルト値は60秒です。以下の例は、ロードバランサの Idle Timeout値を90秒に設定する方法を示しています。

    kind: Service
    apiVersion: v1
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
        service.beta.kubernetes.io/ncloud-load-balancer-idle-timeout: "90"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    ネットワークロードバランサ(NLB)プロパティ設定のユースケース

    ロードバランサの作成時、ACGルールの Inbound Source設定のユースケース

    Serviceタイプが LoadBalancerの場合、外部との通信のために Inbound Sourceに 0.0.0.0./0の ACGルールがデフォルトで設定されます。他の IP Blockをアクセスソースとして設定する場合は、service.beta.kubernetes.io/ncloud-load-balancer-inbound-sourceのアノテーションを使用できます。複数の Inbound Sourceを設定する場合は、コンマ(,)で区切って入力できます。

    以下は、NLBインスタンス作成時に ACGルールの Inbound Sourceを設定するユースケースです。

    kind: Service
    apiVersion: v1
    metadata:
      name: my-nginx
      annotations:
        service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nlb"
        service.beta.kubernetes.io/ncloud-load-balancer-inbound-source: "10.120.0.0/16,143.248.12.77/32"
    spec:
      ports:
        - port: 80
          targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    

    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.