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

Container Service for Kubernetes:アノテーションを使用した Network Load Balancer (NLB) の設定

最終更新日:Jan 23, 2026

Network Load Balancer (NLB) で Service を使用する場合、YAML ファイルのアノテーションを使用して、NLB ネットワークタイプの指定、設定変更保護の有効化、相互認証の設定などの追加のロードバランシング機能を有効にできます。このトピックでは、Service の YAML ファイルでアノテーションを使用して実行できる一般的な NLB 設定について説明します。設定は、NLB インスタンス、リスナー、サーバーグループのリソースごとに分類されています。

インデックス

カテゴリ

機能カテゴリ

設定リンク

注意事項

NLB の一般的な操作

ロードバランサーの作成

インスタンス設定

セキュリティ設定

リスナーの一般的な操作

リスナーの作成

リスナー設定

セキュリティ設定

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

サーバー設定

注意事項

  • Container Service for Kubernetes (ACK) クラスターはバージョン 1.24 以降、Cloud Controller Manager (CCM) コンポーネントはバージョン 2.5.0 以降である必要があります。クラスターのアップグレード方法の詳細については、「クラスターの手動アップグレード」をご参照ください。コンポーネントのアップグレード方法の詳細については、「コンポーネントの管理」をご参照ください。

  • 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 のゾーン、プライベート IP アドレス、および EIP を指定します。フォーマットは次のとおりです。

NLB のゾーン、プライベート IP アドレス、および Elastic IP (EIP) を指定します。フォーマットは {ゾーン}:{vSwitchID}:{プライベート IP アドレス}:{EIP インスタンス ID} です。複数の設定はカンマ (,) で区切ります。

  • ゾーンと vSwitch ID:必須。cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321 のように、少なくとも 2 つのゾーンを指定します。

    NLB がサポートするリージョンとゾーンは、NLB コンソールで確認できます。

  • プライベート IP アドレス:任意。

  • EIP インスタンス ID:任意。

ゾーンと vSwitch ID:v2.5.0 以降

プライベート IP アドレスと EIP:v2.12.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
  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 を切り替えることができます。有効値:

  • 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

ロードバランサーのプライベート IP アドレスの指定

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

説明

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

NLB のゾーン、プライベート IP アドレス、および EIP を指定します。フォーマットは次のとおりです。

{ゾーン}:{vSwitch ID}:{プライベート IP アドレス}:{EIP インスタンス ID}。 複数の構成は、コンマ (,) を使用して区切ります。

  • ゾーンと vSwitch ID:必須。cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321 のように、少なくとも 2 つのゾーンを指定します。

    NLB がサポートするリージョンとゾーンは、NLB コンソールで確認できます。

  • プライベート IP アドレス:任意。

  • EIP インスタンス ID:任意。

  • ゾーンと vSwitch ID:v2.5.0 以降

  • プライベート IP アドレスと EIP:v2.12.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    # 例:cn-hangzhou-k:vsw-i123456:10.1.0.1,cn-hangzhou-j:vsw-j654321:10.2.0.1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}:${private-ipv4-A},${zone-B}:${vsw-B}:${private-ipv4-B}"
  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

ロードバランサーの EIP インスタンス ID の指定

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

説明

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

NLB のゾーン、プライベート IP アドレス、および EIP を指定します。フォーマットは次のとおりです。

{ゾーン}:{vSwitch ID}:{プライベート IP アドレス}:{EIP インスタンス ID}。複数の構成はコンマ (,) で区切ります。

  • ゾーンと vSwitch ID:必須。cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321 のように、少なくとも 2 つのゾーンを指定します。

    NLB がサポートするリージョンとゾーンは、NLB コンソールで確認できます。

  • プライベート IP アドレス:任意。

  • EIP インスタンス ID:任意。

ゾーンと vSwitch ID:v2.5.0 以降

プライベート IP アドレスと EIP:v2.12.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    # プライベート IP アドレスが不要な場合は、プライベート IP アドレスのフィールドを空のままにします。
    # 例:cn-hangzhou-k:vsw-i123456::eip-12345,cn-hangzhou-j:vsw-j654321::eip-54321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}::${eip-A},${zone-B}:${vsw-B}::${eip-B}"
  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 バージョン

ロードバランサーインスタンスの名前を指定します。NLB 名は 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 を指定した後は変更できません。

リソースグループ ID は、Alibaba Cloud リソース管理コンソールで照会できます。

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 タイプは作成後に変更できません。この機能を使用するには、クラスターの 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。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。

共有帯域幅の ID は VPC コンソールで照会できます。

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 タイプは 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 インスタンスを保持し、NLB インスタンスとサーバーグループから kubernetes.do.not.delete および ack.aliyun.com タグを削除します。サーバーグループ内の既存のサーバーは保持されます。

この機能が有効な場合、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 クラスターバージョン v1.24 以降が必要です。クラスターバージョンのアップグレードについては、「ACK クラスターの Kubernetes バージョンのアップグレード」をご参照ください。

該当なし

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 リスナーの作成

説明

UDP リスナーを作成する際にヘルスチェックを手動で指定しない場合、デフォルトでサーバーグループに対して TCP ヘルスチェックが有効になります。アノテーションを使用して 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。証明書管理サービスコンソールにログインし、SSL 証明書ページで証明書を作成および表示できます。

次の図に示します。

image

重要

現在、TCP/SSL リスナーはクライアント IP 保持が有効になっているサーバーグループをサポートしていません。つまり、同じ Service に対して service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}"service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on" の両方のアノテーションを設定することはできません。NLB を介してクライアント IP アドレスを取得する方法の詳細については、「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。証明書管理サービスコンソールにログインし、SSL 証明書ページで証明書を作成および表示できます。

次の図に示します。

image

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

CA 証明書の ID。証明書管理サービスコンソールにログインし、PCA 証明書管理ページで証明書の詳細から ID を確認できます。

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。証明書管理サービスコンソールにログインし、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

リスナーの秒間新規接続数 (CPS) の上限設定

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

説明

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

NLB インスタンスの秒間最大新規接続数。有効値:[0, 1000000]。値 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。証明書管理サービスコンソールにログインし、SSL 証明書ページで証明書を作成および表示できます。

次の図に示します。

image

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

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.0 プロトコルを優先しますが、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 タプルハッシュ。4 タプル (送信元 IP、宛先 IP、送信元ポート、宛先ポート) に基づき、一貫性ハッシュにより同じフローが同じサーバーにルーティングされることを保証します。

  • 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 ヘルスチェックを設定するには、以下のすべてのアノテーションを指定する必要があります。

アノテーション

説明

サポートされる 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