Load Balancer インスタンスの連携
    • PDF

    Load Balancer インスタンスの連携

    • PDF

    Article Summary

    最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

    VPC環境で利用できます。

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

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

    注意

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

    インスタンス作成

    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
    デフォルト値 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-portsTLSを適用するポートリスト。 e.g. "443,6443"デフォルト値 "443"、 コンマで区切られた値を使用可能
    service.beta.kubernetes.io/ncloud-load-balancer-tls-min-versionTLS最小サポートバージョンタイプコード
    次の値の中から1つ選択: TLSV10、TLSV11、TLSV12
    デフォルト値 TLSV10
    service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocolプロキシプロトコルの有効化有無。次の値の中から1つ選択: "true""false"デフォルト値 "false"
    service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-codeAlgorithmタイプに 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-updateACGのアップデート設定有無。次の値の中から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
    • ネットワークロードバランサ(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-sourceACGルールの 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-codeAlgorithmタイプに Hash(MH) Round Robin(RR)の中から1つを設定可能。次の値の中から1つ選択: MH、RRデフォルト値 MH
    service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-updateACGのアップデート設定有無。次の値の中から1つ選択: "true""false"デフォルト値 "false"
    service.beta.kubernetes.io/ncloud-load-balancer-sticky-sessionSticky Sessionの設定有無。次の値の中から1つ選択: "true""false"デフォルト値 "false"

    ロードバランサの 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 > Public IP メニューからグローバル IPアドレスを申し込み、これをロードバランサに割り当てることができます。グローバル IPアドレスを指定しないと、新規グローバル IPアドレスが申し込まれます。

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

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

    インスタンスのプロパティ設定に関するユースケースは、Load Balancerプロパティ設定のユースケースをご参照ください。

    ネットワークプロキシロードバランサ(NPLB)インスタンス作成のユースケース

    以下は、Kubernetesと連携する NPLBインスタンスを作成するユースケースです。

    1. 以下のサンプルコードを nks-lb.ymlファイルとして保存します。
    • 以下のサンプルコードで、プライベートネットワークプロキシタイプのロードバランサインスタンスを作成するためのアノテーションを確認できます。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: my-nginx
      template:
        metadata:
          labels:
            run: my-nginx
        spec:
          containers:
          - name: my-nginx
            image: nginx
            ports:
            - containerPort: 80
    ---
    
    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-internal: "true"    
        service.beta.kubernetes.io/ncloud-load-balancer-size: "SMALL"
    spec:
      ports:
      - port: 80
        targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    
    1. kubectl apply -f nks-lb.ymlコマンドを実行してリリースします。

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

    1. 以下のサンプルコードを nks-lb.ymlファイルとして保存します。
    • 以下のサンプルコードで、プライベートネットワークプロキシタイプのロードバランサインスタンスを作成するためのアノテーションを確認できます。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          run: my-nginx
      template:
        metadata:
          labels:
            run: my-nginx
        spec:
          containers:
          - name: my-nginx
            image: nginx
            ports:
            - containerPort: 80
    ---
    
    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-internal: "true"    
        service.beta.kubernetes.io/ncloud-load-balancer-size: "SMALL"
    spec:
      ports:
      - port: 80
        targetPort: 80
      selector:
        run: my-nginx
      type: LoadBalancer
    
    1. kubectl apply -f nks-lb.ymlコマンドを実行してリリースします。

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

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

    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.