すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:アノテーションを使用したNLBインスタンスの設定

最終更新日:Dec 19, 2024

ServiceのYAMLファイルにアノテーションを追加して、さまざまな負荷分散機能を使用するようにNetwork Load Balancer (NLB) インスタンスを構成できます。 NLBインスタンスは、Alibaba Cloudがすべてのインターネット (IoE) 用に開発した次世代のレイヤー4ロードバランサーです。 NLBインスタンスは、超高性能とオートスケーリングを提供します。 このトピックでは、アノテーションを使用してNLBインスタンス、リスナー、およびバックエンドサーバーグループを設定する方法について説明します。

目次

カテゴリ

ハイパーリンク

注釈使用法ノート

NLBインスタンスを管理する一般的な操作

インターネット向けNLBインスタンスの作成

内部向けNLBインスタンスの作成

NLBインスタンスの名前の指定

NLBインスタンスが属するリソースグループの指定

デュアルスタックNLBインスタンスの作成

NLBインスタンスへの追加タグの追加

既存のNLBインスタンスの使用

EIP帯域幅プランをNLBインスタンスに関連付ける

NLBインスタンスの削除保護の有効化

NLBインスタンスの設定読み取り専用モードの有効化

IPv6 NLBインスタンスのネットワークタイプの指定

サービスの削除時に自動的に作成されたNLBインスタンスを保持する

リスナーの構成に使用される一般的な注釈

リスナーのセキュリティグループの設定

リスナーにTCPとUDPの両方を設定

TCPリスナーの作成

UDPリスナーの作成

TCP/SSLリスナーの作成

相互認証の有効化

TLSセキュリティポリシーの設定

プロキシプロトコルの設定

追加情報を含むプロキシプロトコルの設定

1秒あたりに作成できる最大接続数の指定

リスナーのアイドル接続のタイムアウト期間の指定

ALPNポリシーの設定

バックエンドサーバーグループを管理する一般的な操作

NLBインスタンスのスケジューリングアルゴリズムの指定

接続ドレインの設定

クライアントIP保存の設定

TCPヘルスチェックの設定

HTTPヘルスチェックの設定

バックエンドサーバーグループの種類の指定

既存のvServerグループの再利用

重み付きラウンドロビンを有効にするサービスの重みの指定

使用上の注意

  • クラスターのKubernetesバージョンは1.24以降である必要があり、クラウドコントローラマネージャー (CCM) はV2.5.0以降である必要があります。 クラスターの更新方法の詳細については、「ACKクラスターの手動更新」をご参照ください。 コンポーネントの更新方法の詳細については、「コンポーネントの管理」をご参照ください。

  • サービスのNLBインスタンスを設定するには、サービスのspec.loadBalancerClassパラメーターをalibabacloud.com/nlbに設定する必要があります。 それ以外の場合、デフォルトでClassic Load Balancer (CLB) インスタンスが作成されます。

  • サービスの作成後、CLBとNLBの間でロードバランサーインスタンスのタイプを変更するために、サービスのspec.loadBalancerClassパラメーターを変更することはできません。

  • Container Service for Kubernetes (ACK) コンソールを使用してNLBインスタンスを管理することはできません。 NLBインスタンスを管理するには、kubectlを使用します。

NLBインスタンスを管理する一般的な操作

インターネット向けNLBインスタンスの作成

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスがデプロイされているゾーン。

NLBコンソールにログインして、NLBをサポートするリージョンとゾーンを表示できます。 NLBインスタンスごとに少なくとも2つのゾーンを選択する必要があります。 複数のゾーンはコンマ (,) で区切ります。 例: cn-hangzhou-k:vsw-i123456、cn-hangzhou-j:vsw-j654321

ワークロードへの影響なし

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

内部向けNLBインスタンスの作成

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type

説明

デフォルト値

サポートされているCCMバージョン

内部向けNLBインスタンスを作成します。 アノテーションの値を変更して、NLBインスタンスのネットワークタイプを変更できます。 有効な値:

  • internet: インターネット向けのNLBインスタンスを作成します。

  • intranet: 内部向けNLBインスタンスを作成します。

NLBコンソールにログインして、NLBをサポートするリージョンとゾーンを表示できます。 NLBインスタンスごとに少なくとも2つのゾーンを選択する必要があります。 複数のゾーンはコンマ (,) で区切ります。 例: cn-hangzhou-k:vsw-i123456、cn-hangzhou-j:vsw-j654321

internet

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLBインスタンスの名前を指定する

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスの名前。 名前は2 ~ 128文字で、英数字、ピリオド (.) 、アンダースコア (_) 、ハイフン (-) を使用できます。 先頭は英字とする必要があります。

ワークロードへの影響なし

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # The name of the NLB instance. 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLBインスタンスが属するリソースグループの指定

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスが属するリソースグループのID。 リソースグループの指定後は変更できません。

リソース管理コンソールにログインして、リソースグループIDを照会できます。

ワークロードへの影響なし

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:  "${your-resource-group-id}" # The ID of the resource group. 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

デュアルスタックNLBインスタンスの作成

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスのIPバージョン。 IPバージョンは、指定後は変更できません。 このアノテーションを使用するには、クラスターのkube-proxyモードがIPVSに設定されていることを確認します。 有効な値:

  • ipv4: ipv4。

  • DualStack: IPv4/IPv6デュアルスタック。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-mapsアノテーションで指定されたvSwitchに対してIPv6を有効にする必要があります。

    • IPv6アドレスは、IPv6ネットワークでのみ使用できます。

ipv4

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLBインスタンスにタグを追加する

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

説明

デフォルト値

サポートされているCCMバージョン

追加する追加のタグ。 複数入力する場合は、コンマ (,) で区切ります。 例: k1=v1,k2=v2 CCM 2.10.0以降のバージョンでは、作成および再利用されたインスタンスのタグを変更できます。

重要

このアノテーションをサービスに追加して追加のタグを指定すると、コンソールでNLBインスタンスタグに対して実行される操作が上書きされる場合があります。

ワークロードへの影響なし

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

既存のNLBインスタンスの使用

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

使用する既存のNLBインスタンスのID。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners

アノテーションは、NLBインスタンスの既存のリスナーを上書きするかどうかを指定します。 有効な値:

  • true: CCMは、サービスの設定に基づいてNLBインスタンスのリスナーを作成、更新、または削除します。

  • false: CCMはNLBインスタンスのリスナーに変更を加えません。

false

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # The ID of the existing NLB instance that you want to use. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

EIP帯域幅プランをNLBインスタンスに関連付ける

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスを関連付けるElastic IP Address (EIP) 帯域幅プランのID。

Virtual Private Cloud (VPC) コンソールにログインして、EIP帯域幅プランのIDを照会できます。

ワークロードへの影響なし

CCM 2.9.1以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLBインスタンスの削除保護を有効にする

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスの削除保護を有効にするかどうかを指定します。 有効な値:

  • on

  • オフ

重要

LoadBalancerサービス用に作成されたNLBインスタンスの削除保護をNLBコンソールで手動で有効にした場合、kubectl delete svc {your-svc-name} コマンドを実行してNLBインスタンスを削除できます。

on

CCM 2.9.1以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLBインスタンスの設定読み取り専用モードを有効にする

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスの設定読み取り専用モードを有効にするかどうかを指定します。 有効な値:

  • ConsoleProtection

  • 非保護

ConsoleProtection

CCM 2.9.1以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

IPv6 NLBインスタンスのネットワークタイプの指定

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

NLBインスタンスのIPバージョン。 IPバージョンは、指定後は変更できません。 このアノテーションを使用するには、クラスターのkube-proxyモードがIPVSに設定されていることを確認します。 有効な値:

  • ipv4: ipv4。

  • DualStack: IPv4/IPv6デュアルスタック。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-mapsアノテーションで指定されたvSwitchに対してIPv6を有効にする必要があります。

    • IPv6アドレスは、IPv6ネットワークでのみ使用できます。

ipv4

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type

IPv6 NLBインスタンスのネットワークタイプを指定します。 有効な値:

  • イントラネット: プライベートIPv6アドレス。

  • internet: パブリックIPv6アドレス。

説明

パブリックIPv6アドレスを使用するには、NLBインスタンスが存在するVPCにIPv6ゲートウェイを作成する必要があります。 詳細については、「IPv6ゲートウェイの作成と管理」をご参照ください。

イントラネット

CCM 2.9.1以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type: internet # Specify a public IPv6 address.
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

サービスを削除すると自動的に作成されたNLBインスタンスを保持する

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete

説明

デフォルト値

サポートされているCCMバージョン

LoadBalancerサービスを削除すると、そのサービスを使用して作成されたNLBインスタンスは保持され、NLBインスタンスおよびサーバーグループのkubernetes.do.not.de leteおよびack.aliyun.comタグは削除されます。 サーバグループ内の既存のサーバは保持されます。

この機能を有効にすると、サービスの同期中にPreservedOnDeleteタイプの警告イベントが生成されます。 アノテーションを設定した後、イベントが存在するかどうかを確認して、この機能が有効になっていることを確認することを推奨します。

有効な値:

  • 空でない: 保持機能を有効にします。

  • 値が空または設定されていない場合、保持機能は有効になりません。

重要

この操作を実行するには、サービスタイプを変更するのではなく、サービスを削除します。 そうしないと、サービスが誤ってサービスに再関連付けされる可能性があります。

ワークロードへの影響なし

CCM 2.10.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナーを管理する一般的な操作

リスナーのセキュリティグループの構成

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

説明

デフォルト値

サポートされているCCMバージョン

リスナー用に設定されたセキュリティグループのID。 ID が複数ある場合は、コンマ (,) で区切ります。 例: sg-aaaaa,sg-bbbbb

ワークロードへの影響なし

CCM 2.6.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # Separate multiple security group IDs with commas (,). 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナーにTCPとUDPの両方を設定

説明

デフォルト値

サポートされているCCMバージョン

Kubernetesバージョンが1.24以降のクラスターのみがこの機能をサポートしています。 ACKクラスターの更新方法の詳細については、「ACKクラスターの手動更新」をご参照ください。

ワークロードへの影響なし

非該当

apiVersion: v1
kind: Service
metadata:
  annotations:
      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 81
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TCPリスナーの作成

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

UDPリスナーの作成

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TCP/SSLリスナーの作成

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: TCP:80、TCPSSL:443

ワークロードへの影響なし

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。

ワークロードへの影響なし

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # If the certificate is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou. 
    # If the certificate is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate ID}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

相互認証の有効化

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: TCP:80、TCPSSL:443

ワークロードへの影響なし

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id

認証局 (CA) 証明書ID。 CA証明書IDを表示するには、証明書管理サービスコンソールにログインします。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert

相互認証を有効にするかどうかを指定します。 有効な値:

  • on: 相互認証を有効にします。

  • off: 相互認証を無効にします。

ワークロードへの影響なし

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    # If the cluster is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou. 
    # If the cluster is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate ID}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}"  # The CA certificate ID. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert: "on"
name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TLSセキュリティポリシーの設定

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: TCP:80、TCPSSL:443

ワークロードへの影響なし

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy

セキュリティポリシーのID。 システムおよびカスタムセキュリティポリシーがサポートされています。 有効な値:

  • tls_cipher_policy_1_0

  • tls_cipher_policy_1_1

  • tls_cipher_policy_1_2

  • tls_cipher_policy_1_2_strict

  • tls_cipher_policy_1_2_strict_with_1_3

tls_cipher_policy_1_0

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # If the cluster is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou. 
    # If the cluster is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate ID}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

プロキシプロトコルの設定

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

説明

デフォルト値

サポートされているCCMバージョン

プロキシプロトコルを有効にしてクライアントIPアドレスをバックエンドサーバーに渡すかどうかを指定します。 有効な値:

  • on:: プロキシプロトコルを有効にします。

  • off: プロキシプロトコルを無効にします。

重要

プロキシプロトコルを有効にする前に、バックエンドサービスに対してプロキシプロトコルV2が有効になっているかどうかを確認してください。 プロキシプロトコルV2が無効になっている場合、クライアントIPアドレスをバックエンドサーバーに渡すことはできません。 慎重に設定します。

off

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

追加情報を含むプロキシプロトコルの設定

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

プロキシプロトコルを有効にしてクライアントIPアドレスをバックエンドサーバーに渡すかどうかを指定します。 有効な値:

  • on:: プロキシプロトコルを有効にします。

  • off: プロキシプロトコルを無効にします。

重要

プロキシプロトコルを有効にする前に、バックエンドサービスに対してプロキシプロトコルV2が有効になっているかどうかを確認してください。 プロキシプロトコルV2が無効になっている場合、クライアントIPアドレスをバックエンドサーバーに渡すことはできません。 慎重に設定します。

off

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled

VpcIdパラメーターをバックエンドサーバーに渡すためにプロキシプロトコルを使用するかどうかを指定します。 有効な値:

  • on:: プロキシプロトコルを使用して、VpcIdパラメーターをバックエンドサーバーに渡します。

  • off: プロキシプロトコルを使用してVpcIdパラメーターをバックエンドサーバーに渡しません。

off

CCM 2.9.1以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled

PrivateLinkEpIdパラメーターをバックエンドサーバーに渡すためにプロキシプロトコルを使用するかどうかを示します。 有効な値:

  • on:: プロキシプロトコルを使用して、PrivateLinkEpIdパラメーターをバックエンドサーバーに渡します。

  • off: プロキシプロトコルを使用してPrivateLinkEpIdパラメーターをバックエンドサーバーに渡しません。

off

CCM 2.9.1以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled

PrivateLinkEpsIdパラメーターをバックエンドサーバーに渡すためにプロキシプロトコルを使用するかどうかを指定します。 有効な値:

  • on:: プロキシプロトコルを使用してPrivateLinkEpsIdパラメーターをバックエンドサーバーに渡します。

  • off: プロキシプロトコルを使用してPrivateLinkEpsIdパラメーターをバックエンドサーバーに渡しません。

off

CCM 2.9.1以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

1秒あたりに作成できる最大接続数を指定します。

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps

説明

デフォルト値

サポートされているCCMバージョン

NLBインスタンスで1秒あたりに作成できる接続の最大数。 有効な値: 0 ~ 1000000 値0は、1秒あたりに作成できる接続数に制限がないことを示します。

ワークロードへの影響なし

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナーのアイドル接続のタイムアウト期間を指定する

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout

説明

デフォルト値

サポートされているCCMバージョン

アイドル接続のタイムアウト期間。 単位: 秒有効値: 10 ~ 900。

900

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

ALPNポリシーの設定

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port

リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: TCP:80、TCPSSL:443

ワークロードへの影響なし

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id

サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn

アプリケーション層プロトコルネゴシエーション (ALPN) を有効にするかどうかを指定します。 有効な値:

  • on:: ALPNを有効にします。

  • off: ALPNを無効にします。

off

CCM 2.10.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy

ALPNポリシー。 有効な値:

  • HTTP1Only: HTTP 1.xのみを使用します。 HTTP 1.1の優先度は、HTTP 1.0の優先度よりも高い。

  • HTTP2Only: HTTP 2.0のみを使用します。

  • HTTP2Optional: HTTP 2.0よりもHTTP 1.xを優先的に使用します。 HTTP 1.1の優先度は、HTTP 1.0の優先度よりも高く、HTTP 1.0の優先度は、HTTP 2.0の優先度よりも高い。

  • HTTP2Preferred: HTTP 1.xよりもHTTP 2.0を優先的に使用します。 HTTP 2.0の優先度は、HTTP 1.1の優先度よりも高く、HTTP 1.1の優先度は、HTTP 1.0の優先度よりも高い。

このアノテーションの値の詳細については、「CreateListener」のAlpnPolicyフィールドをご参照ください。

ワークロードへの影響なし

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    # If the cluster is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou. 
    # If the cluster is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate ID}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy: "HTTP1Only" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

バックエンドサーバーグループを管理する一般的な操作

スケジューリングアルゴリズムの設定

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

説明

デフォルト値

サポートされているCCMバージョン

ルーティングアルゴリズム。 有効な値:

  • wrr: 重み付きラウンドロビン (WRR) アルゴリズムが使用される。 重みの大きいバックエンドサーバーは、重みの小さいバックエンドサーバーよりも多くのリクエストを受け取ります。 デフォルト値です。

  • rr: ラウンドロビンアルゴリズムが使用されます。 リクエストはバックエンドサーバーに順番に転送されます。

  • sch: ソースIPハッシュアルゴリズム。 同じ送信元IPアドレスからのリクエストは、同じバックエンドサーバーに転送されます。

  • tch: 4要素ハッシュアルゴリズムが使用されます。 一貫したハッシュは、以下の要因に基づく: 送信元IPアドレス、宛先IPアドレス、送信元ポート、および宛先ポート。 4つの要素に基づいて同じ情報を含むリクエストは、同じバックエンドサーバーに転送されます。

  • wlc: 重み付き最小接続。 リクエストは、各バックエンドサーバーの重みと負荷に基づいて分散されます。 負荷とは、バックエンドサーバー上の接続数を指します。 複数のバックエンドサーバーの重みが同じ場合、リクエストは接続数が最も少ないバックエンドサーバーに転送されます。

このアノテーションの値の詳細については、CreateServerGroupSchedulerフィールドをご参照ください。

wrr

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "sch"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

接続ドレインの設定

以下の注釈が使用される。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain

アノテーションは、接続ドレインを有効にするかどうかを指定します。 有効な値:

  • on:: 接続のドレインを有効にします。

  • off: 接続のドレインを無効にします。

off

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout

接続ドレインのタイムアウト時間を指定します。 単位: 秒有効値: 10 ~ 900。

ワークロードへの影響なし

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

クライアントIP保存の設定

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip

説明

デフォルト値

サポートされているCCMバージョン

アノテーションは、クライアントIP保存を有効にするかどうかを指定します。 有効な値:

  • on:: クライアントのIP保存を有効にします。

  • off: クライアントIP保存を無効にします。

off

CCM 2.5.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TCPヘルスチェックの設定

以下の注釈が使用される。 TCPヘルスチェックを設定するには、次の表のすべてのアノテーションが必要です。 デフォルトでは、TCPポートに対してヘルスチェックが有効になっています。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

ヘルスチェックを有効にするかどうかを指定します。 有効な値:

  • on:: ヘルスチェックを有効にします。

  • off: ヘルスチェックを無効にします。

on

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

ヘルスチェックに使用するプロトコル。 有効な値:

  • tcp

  • http

tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

ヘルスチェックに使用されるバックエンドサーバーポート。 有効な値: 0 ~ 65535 デフォルト値:0 値0は、バックエンドサーバーで指定されたヘルスチェックポートが使用されていることを示します。

0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

ヘルスチェックのタイムアウト期間。 単位: 秒有効値: 1 ~ 300。

5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

正常でないバックエンドサーバーが正常であると宣言される前に実行する必要があるヘルスチェックの連続成功回数。 設定可能な値は 1 から 100 です。

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

ヘルスチェックが実行される間隔。 単位: 秒有効値: 1 ~ 50。

10

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

HTTPヘルスチェックの設定

以下の注釈が使用される。 TCPヘルスチェックを設定するには、次の表のすべてのアノテーションが必要です。 デフォルトでは、TCPポートに対してヘルスチェックが有効になっています。

注釈

説明

デフォルト値

サポートされているCCMバージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag

ヘルスチェックを有効にするかどうかを指定します。 有効な値:

  • on:: ヘルスチェックを有効にします。

  • off: ヘルスチェックを無効にします。

on

CCM 2.5.0以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type

ヘルスチェックに使用するプロトコル。 有効な値:

  • tcp

  • http

tcp

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri

ヘルスチェックに使用されるパス。 パスの長さは1 ~ 80文字で、英数字、および特殊文字のみを使用できます。 URLはスラッシュ (/) で始まる必要があります。 詳細については、「CreateServerGroup」をご参照ください。

説明

このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeアノテーションがHTTPに設定されている場合にのみ有効になります。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain

ヘルスチェックに使用するドメイン名。 有効な値:

  • $_ip: プライベートサーバーIP

  • domain: domain nameドメイン名の長さは1 ~ 80文字で、英数字、ハイフン (-) 、ピリオド (.) を使用できます。

説明

このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeアノテーションがHTTPに設定されている場合にのみ有効になります。

ワークロードへの影響なし

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port

ヘルスチェックに使用されるバックエンドサーバーポート。 有効な値: 0 ~ 65535 デフォルト値:0 値0は、バックエンドサーバーで指定されたヘルスチェックポートが使用されていることを示します。

0

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout

ヘルスチェックのタイムアウト期間。 単位: 秒有効値: 1 ~ 300。

5

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold

正常でないバックエンドサーバーが正常であると宣言される前に実行する必要があるヘルスチェックの連続成功回数。 設定可能な値は 1 から 100 です。

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold

正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。

2

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval

ヘルスチェックが実行される間隔。 単位: 秒有効値: 1 ~ 50。

10

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method

ヘルスチェックの実行に使用するメソッド。 有効な値:

  • GET

  • ヘッド

説明

このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeアノテーションがHTTPに設定されている場合にのみ有効になります。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "http"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri: "/test/index.html"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.test.com"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
    # Optional. Specify the health check method. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

バックエンドサーバーグループの種類を指定する

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type

説明

デフォルト値

サポートされているCCMバージョン

バックエンドサーバーグループの種類を指定します。 有効な値:

  • Ip: IPアドレスを指定してバックエンドサーバーを追加できます。

  • インスタンス: ECS (Elastic Compute Service) インスタンスとENI (elastic network Interface) をバックエンドサーバーとして追加できます。 デフォルト値です。

NLBサーバーグループの詳細については、「NLBサーバーグループ」をご参照ください。

インスタンス

CCM 2.8.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321. 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

既存のvServerグループの再利用

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

このアノテーションは、vServerグループを再利用するために使用できます。 このアノテーションは、既存のNLBインスタンスを使用する場合にのみ有効です。 詳細については、「既存のSLBインスタンスを再利用して異なるACKクラスターでサービスを公開する」をご参照ください。

重み付きラウンドロビンを有効にするサービスの重みを設定する

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

複数のサービスが同じNLBインスタンスを使用する場合、このアノテーションを使用して、現在のサービスに配信されるトラフィックの割合を指定できます。 このアノテーションは、既存のvServerグループが再利用された場合にのみ有効です。 詳細については、「既存のSLBインスタンスを再利用して異なるACKクラスターでサービスを公開する」をご参照ください。