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

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

最終更新日:Nov 21, 2025

Service に Network Load Balancer (NLB) インスタンスを使用する場合、YAML ファイルのアノテーションを使用して、NLB インスタンスのネットワークタイプを指定したり、設定変更保護を有効にしたり、相互認証を設定したりするなど、高度な負荷分散機能を設定できます。このトピックでは、Service YAML ファイルで使用できるアノテーションについて説明し、NLB インスタンス、リスナー、サーバーグループの一般的な設定を行います。

インデックス

カテゴリ

機能カテゴリ

設定リンク

前提条件

NLB インスタンスでの一般的な操作

ロードバランサーの作成

インスタンス設定

セキュリティ設定

リスナーでの一般的な操作

リスナーの作成

リスナー設定

セキュリティ設定

サーバーグループでの一般的な操作

サーバー設定

考慮事項

  • クラスターのバージョンは 1.24 以降、Cloud Controller Manager (CCM) のバージョンは 2.5.0 以降です。クラスターをアップグレードするには、「ACK クラスターの手動アップグレード」をご参照ください。コンポーネントをアップグレードするには、「コンポーネントの管理」をご参照ください。

  • Service の定義で、spec.loadBalancerClassalibabacloud.com/nlb に設定します。このパラメーターを指定しない場合、デフォルトで Classic Load Balancer (CLB) インスタンスが作成されます。

  • Service の作成後、spec.loadBalancerClass の値は変更できません。CLB リソースを NLB リソースに変換したり、その逆を行ったりすることはできません。

  • ACK コンソールで NLB インスタンスを管理することはできません。kubectl コマンドを使用する必要があります。

NLB インスタンスでの一般的な操作

パブリック NLB インスタンスの作成

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps

説明

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

NLB インスタンスのゾーンを指定します。

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

v2.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}" # たとえば、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 インスタンスとして指定します。このアノテーションの値を変更することで、パブリック NLB インスタンスとプライベート NLB インスタンスを切り替えることができます。有効値:

  • internet: パブリック NLB インスタンス。

  • intranet: プライベート NLB インスタンス。

デフォルト値: internet

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

v2.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}" # たとえば、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

ロードバランサー名の指定

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

説明

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

ロードバランサーインスタンスの名前を指定します。名前は 2~128 文字で、英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。

v2.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}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # NLB インスタンスの名前。
  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-resource-group-id

説明

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

ロードバランサーが属するリソースグループを指定します。リソースグループ ID は、指定後に変更することはできません。

Alibaba Cloud Resource Management プラットフォームにログインして、リソースグループ ID をクエリできます。

v2.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}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:  "${your-resource-group-id}" # リソースグループの ID。
  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 バージョンは、NLB インスタンスの作成後に変更することはできません。クラスターの kube-proxy は IPVS モードで動作する必要があります。有効値:

  • ipv4: IPv4。

  • DualStack: デュアルスタック。IPv4 と IPv6 の両方がサポートされます。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps で指定された 2 つの vSwitch で IPv6 が有効になっている必要があります。

    • 生成された IPv6 アドレスは、IPv6 をサポートする環境でのみアクセスできます。

デフォルト値: ipv4

v2.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}" # たとえば、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

ロードバランサーへの追加タグの付与

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

説明

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

追加のタグを追加できます。複数のタグはコンマ (,) で区切ります。例: k1=v1,k2=v2。CCM v2.10.0 以降では、作成されたインスタンスと再利用されたインスタンスのタグを変更できます。

重要

このアノテーションを Service に追加して追加のタグを指定すると、コンソールで対応するロードバランサーインスタンスのタグに加えられた変更が上書きされる可能性があります。

v2.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}" # たとえば、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

既存のロードバランサーの再利用

アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。

アノテーション

説明

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

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

既存のロードバランサーの ID。

v2.5.0 以降

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

Service に基づいて NLB リスナー設定を同期するかどうかを指定します。有効値:

  • true: CCM は Service 設定に基づいて NLB リスナーを作成、更新、削除します。

  • false: CCM は NLB リスナーに対して一切の操作を行いません。

デフォルト値: false

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # NLB インスタンスの ID。
    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

共有帯域幅インスタンスの関連付け

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id

説明

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

関連付ける共有帯域幅インスタンスの ID。

VPC コンソールにログインして、共有帯域幅インスタンスの ID をクエリできます。

v2.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}" # たとえば、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

IPv6 アドレスのネットワークタイプの指定

アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。

アノテーション

説明

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

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

NLB インスタンスの IP バージョンを指定します。IP バージョンは、NLB インスタンスの作成後に変更することはできません。クラスターの kube-proxy は IPVS モードで動作する必要があります。有効値:

  • ipv4: IPv4。

  • DualStack: デュアルスタック。IPv4 と IPv6 の両方がサポートされます。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps で指定された 2 つの vSwitch で IPv6 が有効になっている必要があります。

    • 生成された IPv6 アドレスは、IPv6 をサポートする環境でのみアクセスできます。

デフォルト値: ipv4

v2.5.0 以降

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

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

  • intranet: プライベート IPv6

  • internet: パブリック IPv6

デフォルト値: intranet

説明

パブリック IPv6 を有効にする場合、NLB インスタンスがデプロイされている VPC に IPv6 ゲートウェイが存在する必要があります。詳細については、「IPv6 ゲートウェイの作成と管理」をご参照ください。

v2.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}" # たとえば、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 # IPv6 アドレスのネットワークタイプをパブリックに指定します。
  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

Service の削除時に自動作成されたロードバランサーを保持する

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete

説明

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

LoadBalancer Service を削除すると、Service によって作成された NLB インスタンスは保持され、kubernetes.do.not.deleteack.aliyun.com タグが NLB インスタンスとサーバーグループから削除されます。サーバーグループ内の既存のサーバーは保持されます。

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

有効な値:

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

  • 空または未設定: 保持機能を無効にします。

重要

この操作は、Service タイプを変更するのではなく、Service を削除することによって実行してください。そうしないと、Service が以前に保持されていた NLB インスタンスに誤って再関連付けされる可能性があります。

v2.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}" # たとえば、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 バージョン

リスナーのセキュリティグループを設定します。複数の値はコンマ (,) で区切ります。例: sg-aaaaa,sg-bbbbb

v2.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}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # 複数のセキュリティグループはコンマ (,) で区切ります。
  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 クラスターのアップグレード」をご参照ください。

該当なし

apiVersion: v1
kind: Service
metadata:
  annotations:
      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、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}" # たとえば、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}" # たとえば、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

v2.5.0 以降

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

サーバー証明書の ID。Digital Certificate Management Service コンソールにログインし、[SSL 証明書] ページで証明書を作成および表示できます。

次の図に例を示します。

image

重要

TCP/SSL リスナーは、クライアント IP アドレスの永続化が有効になっているサーバーグループに関連付けることはできません。つまり、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}"service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on" アノテーションを同時に設定することはできません。詳細については、「NLB インスタンスを使用してクライアントの送信元 IP アドレスを取得する」をご参照ください。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
  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-listener-port-range

説明

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

この機能は Terway ネットワークプラグインでのみサポートされています。

NLB の全ポート転送用のリスナーアドレス範囲を設定することで、指定したポート範囲をリッスンし、トラフィックをバックエンドサーバーの対応するポートに転送できます。

フォーマットは ポート範囲:Service ポート です。複数の値はコンマ (,) で区切ります。例: 80-100:80,400-500:443。同じプロトコルの複数のポートとポート範囲は重複できません。

targetPort はバックエンドサーバーのヘルスチェックポートです。1 から 65535 までの整数である必要があります。

v2.11.4 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    # 80-100 および 400-500 ポート範囲のリスナーを設定します。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range: "80-100:80,400-500:443"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    # targetPort はバックエンドサーバーのヘルスチェックポートであり、整数である必要があります。
    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

v2.5.0 以降

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

サーバー証明書の ID。Digital Certificate Management Service コンソールにログインし、[SSL 証明書] ページで証明書を作成および表示できます。

次の図に例を示します。

image

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

CA 証明書の ID。Digital Certificate Management Service コンソールにログインし、[PCA 証明書管理] ページで証明書の詳細を表示できます。

image

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

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

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-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

v2.5.0 以降

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

サーバー証明書の ID。Digital Certificate Management Service コンソールにログインし、[SSL 証明書] ページで証明書を作成および表示できます。

次の図に例を示します。

image

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}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    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

Proxy Protocol の構成

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

説明

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

Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効値:

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

重要

Proxy Protocol を有効にする前に、バックエンドサービスで Proxy Protocol v2 が有効になっているかどうかを確認してください。有効になっていない場合、アクセスが失敗する可能性があります。このパラメーターは慎重に設定してください。

v2.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}" # たとえば、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

Proxy Protocol で追加情報を伝送する

アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。

アノテーション

説明

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

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

Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効値:

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

重要

Proxy Protocol を有効にする前に、バックエンドサービスで Proxy Protocol v2 が有効になっているかどうかを確認してください。有効になっていない場合、アクセスが失敗する可能性があります。このパラメーターは慎重に設定してください。

v2.5.0 以降

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

Proxy Protocol を使用して VpcId をバックエンドサーバーに渡すかどうかを指定します。有効値:

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

v2.9.1 以降

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

Proxy Protocol を使用して PrivateLinkEpId をバックエンドサーバーに渡すかどうかを指定します。有効値:

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

v2.9.1 以降

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

Proxy Protocol を使用して PrivateLinkEpsId をバックエンドサーバーに渡すかどうかを指定します。有効値:

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

v2.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}" # たとえば、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 から 1,000,000 の範囲でなければなりません。値 0 は制限なしを示します。

v2.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}" # たとえば、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

v2.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}" # たとえば、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

v2.5.0 以降

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

サーバー証明書の ID。Digital Certificate Management Service コンソールにログインし、[SSL 証明書] ページで証明書を作成および表示できます。

次の図に例を示します。

image

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

Application-Layer Protocol Negotiation (ALPN) を有効にするかどうかを指定します。有効値:

  • on: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: off

v2.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/1.x プロトコルを優先しますが、HTTP/2.0 プロトコルも受け入れます。優先順位は HTTP/1.1 > HTTP/1.0 > HTTP/2.0 です。

  • HTTP2Preferred: HTTP/2 プロトコルを優先しますが、HTTP/1.x プロトコルも受け入れます。優先順位は HTTP/2.0 > HTTP/1.1 > HTTP/1.0 です。

このオプションの有効値の詳細については、「CreateListener」API リファレンスの AlpnPolicy フィールドをご参照ください。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    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: 重み付きラウンドロビン。重みが大きいサーバーは、重みが小さいサーバーよりも多くのリクエストを受け取ります。

  • rr: ラウンドロビン。リクエストはバックエンドサーバーに順番に分散されます。

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

  • tch: 4 要素ハッシュ。リクエストは、送信元 IP アドレス、宛先 IP アドレス、送信元ポート、宛先ポートの 4 つの要素のハッシュに基づいてバックエンドサーバーに分散されます。これにより、同じストリームからのリクエストが同じバックエンドサーバーに分散されることが保証されます。

  • wlc: 重み付き最小接続。各バックエンドサーバーの重みに加えて、各バックエンドサーバーへの接続数も考慮されます。バックエンドサーバーの重みが同じ場合、接続数が最も少ないバックエンドサーバーがポーリングされます。

デフォルト値: wrr

このオプションの有効値の詳細については、「CreateServerGroup」API リファレンスの Scheduler フィールドをご参照ください。

v2.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}" # たとえば、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

v2.5.0 以降

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

接続ドレインのタイムアウト期間を設定します。

  • 単位: 秒。

  • 値は 0 から 900 の範囲でなければなりません。値 0 は、接続がすぐに中断されることを示します。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、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: 機能を有効にします。

  • off: 機能を無効にします。

デフォルト値: on

v2.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}" # たとえば、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 ポートに対してデフォルトで有効になっています。

アノテーション

説明

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 は、サーバーのポートがヘルスチェックに使用されることを示します。

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

ヘルスチェック応答の最大タイムアウト期間。単位: 秒。値は 1 から 300 の範囲でなければなりません。

デフォルト値: 5

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

サーバーのヘルスチェックステータスが失敗から成功に変更されるまでに必要な連続した成功したヘルスチェックの回数。値は 2 から 10 の範囲でなければなりません。

デフォルト値: 2

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

サーバーのヘルスチェックステータスが成功から失敗に変更されるまでに必要な連続した失敗したヘルスチェックの回数。値は 2 から 10 の範囲でなければなりません。

デフォルト値: 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}" # たとえば、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 ヘルスチェックの設定

アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。HTTP ヘルスチェックを設定するには、以下のすべてのアノテーションが必要です。デフォルトでは、TCP ポートに対してヘルスチェックが有効になっています。

アノテーション

説明

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

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

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

  • on: 有効。

  • off: シャットダウン。

デフォルト値: on

v2.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 文字で、英字、数字、特殊文字のみを含めることができます。スラッシュ (/) で始まる必要があります。詳細については、「CreateServerGroup」をご参照ください。

説明

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP に設定されている場合にのみ有効です。

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

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

  • $SERVER_IP: バックエンドサーバーのプライベート IP アドレスを使用します

  • domain: ドメイン名を指定します。ドメイン名は 1~80 文字で、小文字、数字、ハイフン (-)、ピリオド (.) のみを含めることができます。

説明

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP に設定されている場合にのみ有効です。

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

ヘルスチェックに使用されるサーバー上のポート。値は 0 から 65535 の範囲でなければなりません。値 0 は、サーバーのポートがヘルスチェックに使用されることを示します。

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

ヘルスチェック応答の最大タイムアウト期間。単位: 秒。値は 1 から 300 の範囲でなければなりません。

デフォルト値: 5

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

サーバーのヘルスチェックステータスが失敗から成功に変更されるまでに必要な連続した成功したヘルスチェックの回数。値は 2 から 10 の範囲でなければなりません。

デフォルト値: 2

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

サーバーのヘルスチェックステータスが成功から失敗に変更されるまでに必要な連続した失敗したヘルスチェックの回数。値は 2 から 10 の範囲でなければなりません。

デフォルト値: 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

  • HEAD

説明

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP に設定されている場合にのみ有効です。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、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"
    # ヘルスチェックメソッドを設定します。このアノテーションはオプションです。
    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 アドレスタイプ。IP アドレスタイプのバックエンドサーバーを直接追加できます。

  • Instance (デフォルト): サーバータイプ。ECS および ENI タイプのインスタンスを追加できます。

デフォルト値: Instance

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

v2.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}" # たとえば、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

既存のサーバーグループの再利用

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port

既存のサーバーグループを再利用できます。この機能は、既存の NLB インスタンスを再利用する場合にのみ機能します。詳細については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。

トラフィックを受信する Service の重みの設定

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

複数の Service が同じ NLB インスタンスを再利用する場合、このアノテーションを使用して現在の Service のトラフィックの重みを設定できます。このアノテーションは、既存のサーバーグループを再利用する場合にのみ機能します。詳細については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。

バックエンドサーバーの重み更新の無視

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update

説明

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

Service の同期中、サーバーグループ内のバックエンドサーバーの重みの更新はスキップされます。この設定は、CCM 以外のメカニズムを介してバックエンドサーバーの重みをを手動で管理する必要があるシナリオに適用できます。有効値:

  • on

  • off

デフォルト値: off

v2.11.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "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