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

Container Service for Kubernetes:アノテーションを使用したクラシックロードバランサー (CLB) の設定

最終更新日:Apr 24, 2026

高度な負荷分散を実現するために、Service の YAML ファイルにアノテーションを追加することで、クラシックロードバランサー (CLB)、リスナー、およびバックエンドサーバーグループを設定できます。

目次

カテゴリ

機能カテゴリ

設定リンク

アノテーションの使用方法

CLB の一般的な操作

クラシックロードバランサーの作成

既存インスタンスの指定

CLB の設定

インスタンス保護の有効化

リスナーの一般的な操作

セッション維持の設定

ポートとプロトコルの設定

詳細設定

バックエンドサーバーグループの一般的な操作

設定管理

関連ドキュメント

アノテーションの使用方法

  • アノテーションでは大文字と小文字が区別されます。

  • アノテーションを使用する前に、必要な Cloud Controller Manager (CCM) コンポーネントのバージョンを確認してください。CCM コンポーネントをアップグレードするには、「コンポーネント管理」をご参照ください。CCM コンポーネントの変更履歴については、「Cloud Controller Manager」をご参照ください。

  • 2019年9月11日より、annotations フィールド内の alicloudalibaba-cloud に更新されました。

    例:

    変更前: service.beta.kubernetes.io/alicloud-loadbalancer-id

    変更後: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

    システムは古い alicloud アノテーションも引き続きサポートしているため、既存の設定を変更する必要はありません。

CLB の一般的な操作

パブリックロードバランサーの作成

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

プライベートロードバランサーの作成

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

説明

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

ロードバランサーのアドレスタイプを指定します。有効値:

  • internet:サービスはパブリックネットワーク経由でアクセスされます。対応する CLB の [アドレスタイプ][パブリック] である必要があります。

  • intranet:サービスはプライベートネットワーク経由でアクセスされます。対応する CLB の [アドレスタイプ][プライベート] である必要があります。

デフォルト値: internet

CLB には手動で VSwitch を指定することを推奨します。詳細については、「ロードバランサーの VSwitch の指定」をご参照ください。VSwitch を指定しない場合、システムは CCM のバージョンに基づいて自動的に VSwitch を選択します:

  • v2.13.0 より前のバージョンでは、システムはデフォルトでクラスターのコントロールプレーンで設定された最初の VSwitch を使用します。

  • v2.13.0 以降のバージョンでは、システムは利用可能なすべての VSwitch から自動的に VSwitch を選択します。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

ロードバランサーの仕様

アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。

アノテーション

説明

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

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type

インスタンスの課金タイプ。有効値:

  • PayBySpec:スペック課金。

  • PayByCLCU:使用量課金。

デフォルト値: PayBySpec

重要
  • Cloud Controller Manager (CCM) バージョン v2.5.0 以降では、デフォルト値が PayByCLCU に変更されます。

  • 使用量課金型のロードバランサーには仕様を設定できません。そのため、値を PayByCLCU に設定し、同時に service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec アノテーションを使用することはできません。

v2.4.0 以降

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

ロードバランサーインスタンスの仕様。このアノテーションを使用して、特定の仕様の CLB インスタンスを作成したり、既存のインスタンスの仕様を更新したりします。有効値:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

デフォルト値: slb.s1.small

このオプションの有効値に関する詳細については、「CreateLoadBalancer」をご参照ください。

重要

スペック課金型 CLB インスタンスの仕様を CLB コンソールで変更すると、CCM がその変更を元に戻す可能性があります。操作にはご注意ください。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

既存のロードバランサーの使用

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

説明

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

重要
  • クラスターの利用不可やトラフィックの中断などの予期しない動作を防ぐため、API サーバーの CLB や CCM によって作成された CLB は再利用しないでください。代わりに、クラシックロードバランサー (CLB) コンソールで新しいインスタンスを手動で作成してください。

  • 既存の LoadBalancer Service に再利用アノテーションを追加または変更しないでください。再利用操作が失敗したり、CCM がロードバランサーを正しく解放できなくなる可能性があります。

ロードバランサーインスタンスの ID。このアノテーションを使用して、既存の CLB を指定します。

  • デフォルトでは、既存のロードバランサーインスタンスを再利用しても、そのリスナーは上書きされません。既存のリスナーを強制的に上書きするには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners アノテーションを "true" に設定します。この設定は現在のサービスのリスナーにのみ影響し、他のリスナーには影響しません。

    説明

    デフォルトでは、既存のロードバランサーを再利用しても既存のリスナーは上書きされません。理由は次のとおりです:

    • 既存のロードバランサーのリスナーがすでに他のサービスのトラフィックを処理している場合、強制的な上書きはサービス中断を引き起こす可能性があります。

    • CCM はバックエンド設定のサポートが限定的であり、複雑な設定を正しく処理できない場合があります。複雑なバックエンド要件がある場合は、リスナーを上書きせずにコンソールで設定できます。

    これらの理由から、リスナーの強制的な上書きは避けてください。強制的な上書きは、既存のロードバランサーのリスナーポートが使用されなくなった場合にのみ実行できます。

  • (v2.10.0 より前のバージョン) 既存のロードバランサーを再利用する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags アノテーションを使用して追加のタグを追加することはできません。

v1.9.3.81-gca19cd4-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

既存のロードバランサーを使用し、リスナーを強制的に上書き

アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。既存のリスナーを強制的に上書きすると、ポートの競合が発生した場合に既存のリスナーが削除されます。

アノテーション

説明

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

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

重要

クラスターの利用不可やトラフィックの中断などの予期しない動作を防ぐため、API サーバーの CLB や CCM によって作成された CLB は再利用しないでください。代わりに、クラシックロードバランサー (CLB) コンソールで新しいインスタンスを手動で作成してください。

ロードバランサーインスタンスの ID。このアノテーションを使用して、既存の CLB を指定します。

  • デフォルトでは、既存のロードバランサーインスタンスを再利用しても、そのリスナーは上書きされません。既存のリスナーを強制的に上書きするには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners アノテーションを "true" に設定します。この設定は現在のサービスのリスナーにのみ影響し、他のリスナーには影響しません。

    説明

    デフォルトでは、既存のロードバランサーを再利用しても既存のリスナーは上書きされません。理由は次のとおりです:

    • 既存のロードバランサーのリスナーがすでに他のサービスのトラフィックを処理している場合、強制的な上書きはサービス中断を引き起こす可能性があります。

    • CCM はバックエンド設定のサポートが限定的であり、複雑な設定を正しく処理できない場合があります。複雑なバックエンド要件がある場合は、リスナーを上書きせずにコンソールで設定できます。

    これらの理由から、リスナーの強制的な上書きは推奨しません。強制的な上書きは、既存のロードバランサーのリスナーポートが使用されなくなった場合にのみ実行できます。

  • (v2.10.0 より前のバージョン) 既存のロードバランサーを再利用する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags アノテーションを使用して追加のタグを追加することはできません。

v1.9.3.81-gca19cd4-aliyun 以降

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

既存のロードバランサーを再利用する際に、サービスのリスナー設定を CLB と同期するかどうかを決定します。

  • "true":CCM はサービス設定に基づいて、サービスに関連する CLB リスナーを管理します (作成、更新、削除)。管理対象外のリスナーには影響しません。

  • "false":CCM は CLB リスナーに変更を加えません。

デフォルト値: "false"

重要

リスナー設定の競合を避けるため、force-override"true" に設定されている場合、複数のサービスが CLB インスタンス上の同じリスナーを再利用するように設定しないでください。

v1.9.3.81-gca19cd4-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

プライマリおよびスタンバイのアベイラビリティゾーンの指定

アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。プライマリおよびスタンバイのアベイラビリティゾーンは、作成後に変更することはできません。

一部のリージョンでは、ロードバランサーはプライマリおよびスタンバイのアベイラビリティゾーンをサポートしていません。正確な情報については、CLB コンソールのインスタンス作成ページをご参照ください。

アノテーション

説明

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

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid

プライマリバックエンドサーバーのアベイラビリティゾーン ID。

v1.9.3.10-gfb99107-aliyun 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid

スタンバイバックエンドサーバーのアベイラビリティゾーン ID。

v1.9.3.10-gfb99107-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

帯域幅課金型ロードバランサーの作成

アノテーション: 複数のアノテーションが使用されます。次の 2 つのアノテーションが必要です。

アノテーション

説明

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

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type

ロードバランサーインスタンスの課金タイプ。有効値:

  • paybytraffic

  • paybybandwidth

デフォルト値: paybytraffic

v1.9.3 以降

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

ロードバランサーのピーク帯域幅。デフォルト値: 50。このアノテーションはパブリックロードバランサーにのみ適用されます。その他の制限については、「パブリックロードバランサーインスタンスの課金方法の変更」をご参照ください。

v1.9.3.10-gfb99107-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

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

アノテーション: 複数のアノテーションが使用されます。次の 2 つのアノテーションが必要です。

アノテーション

説明

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

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

ロードバランサーのアドレスタイプを指定します。有効値:

  • internet:サービスはパブリックネットワーク経由でアクセスされます。対応する CLB の [アドレスタイプ][パブリック] である必要があります。

  • intranet:サービスはプライベートネットワーク経由でアクセスされます。対応する CLB の [アドレスタイプ][プライベート] である必要があります。

デフォルト値: internet

v1.9.3 以降

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

ロードバランサーインスタンスの VSwitch ID。VSwitch は Kubernetes クラスターと同じ Virtual Private Cloud (VPC) 内にある必要があります。

このアノテーションを使用する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type"intranet" に設定する必要もあります。

VSwitch ID を確認するには、Virtual Private Cloud コンソールに移動してください。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
   service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
   service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

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

アノテーション: 複数のアノテーションが使用されます。次の 3 つのアノテーションが必要です。

アノテーション

説明

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

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

ロードバランサーのアドレスタイプを指定します。有効値:

  • internet:サービスはパブリックネットワーク経由でアクセスされます。これはデフォルト値です。対応する CLB の [アドレスタイプ][パブリック] である必要があります。

  • intranet:サービスはプライベートネットワーク経由でアクセスされます。対応する CLB の [アドレスタイプ][プライベート] である必要があります。

デフォルト値: internet

v1.9.3 以降

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

ロードバランサーインスタンスの VSwitch ID。VSwitch は Kubernetes クラスターと同じ Virtual Private Cloud (VPC) 内にある必要があります。

このアノテーションを使用する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type を "intranet" に設定する必要もあります。

VSwitch ID を確認するには、Virtual Private Cloud コンソールにログインしてください。

v1.9.3 以降

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

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

  • IP アドレスは、指定された VSwitch の CIDR ブロック内にある必要があります。IPv4 アドレスのみがサポートされます。このアノテーションは service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id と一緒に使用する必要があります。

  • IP アドレスは、ロードバランサーインスタンスの作成後に変更することはできません。

v2.7.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
  name: nginx
  namespace: default
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 80
      name: http
  selector:
    app: nginx

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

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

説明

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

追加するタグのカンマ区切りリスト。例:"k1=v1,k2=v2"。CCM バージョン v2.10.0 以降では、既存および再利用されたインスタンスのタグを変更できます。

重要

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

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2" 
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

IPv6 ロードバランサーの作成

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

説明

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

ロードバランサーインスタンスの IP バージョン。IP バージョンはインスタンス作成後に変更できません。この機能を使用するには、クラスターの kube-proxy モードが IPVS である必要があります。有効値:

  • ipv4:IPv4。

  • ipv6:IPv6。生成された IPv6 アドレスは、IPv6 が有効な環境からのみアクセスできます。

デフォルト値: ipv4

v1.9.3.220-g24b1885-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
  name: nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

ロードバランサーの削除保護の有効化

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

説明

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

ロードバランサーの削除保護設定。有効値:

  • on

  • off

デフォルト値: on

重要

LoadBalancer サービスによって作成されたロードバランサーの場合、CLB コンソールで削除保護を有効にしても、kubectl delete svc {your-svc-name} を実行することで、サービスに関連付けられたロードバランサーを削除できます。

v1.9.3.313-g748f81e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

ロードバランサーの変更保護の有効化

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

説明

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

ロードバランサーの変更保護設定。有効値:

  • ConsoleProtection

  • NonProtection

デフォルト値: ConsoleProtection

v1.9.3.313-g748f81e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

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

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

説明

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

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

v1.9.3.313-g748f81e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

ロードバランサーのリソースグループの指定

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

説明

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

ロードバランサーのリソースグループ ID。リソースグループ ID は、ロードバランサーの作成後に変更することはできません。リソースグループ ID を確認するには、Resource Management コンソールに移動してください。

v1.9.3.313-g748f81e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

サービスのホスト名の設定

アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

サービスのホスト名を設定します。ホスト名は DNS 命名規則に従う必要があります。

注意事項:

  • このアノテーションを追加すると、サービスの EXTERNAL-IP がデフォルトの CLB IP アドレスから your_service_name に変更されます。クラスター内から CLB IP アドレスにアクセスすると、トラフィックは CLB を経由してクラスターに戻ります (ヘアピン)。

  • このアノテーションを追加した後、リスナープロトコルが TCP または UDP の場合、クラスター内から CLB IP アドレスにアクセスするとヘアピン問題が発生する可能性があります。詳細については、「クライアントがロードバランサーにアクセスできない」をご参照ください。

  • このアノテーションは、CLB インスタンスをドメイン名に自動的にバインドしません。ドメイン名を購入し、手動でインスタンスにバインドする必要があります。ドメイン名の購入については、「Alibaba Cloud DNS とは」をご参照ください。

v2.3.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
  name: nginx-svc
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

期待される出力:

NAME         TYPE           CLUSTER-IP       EXTERNAL-IP            PORT(S)                      AGE
nginx-svc    loadBalancer   47.100.XX.XX     www.example.com        80:30248/TCP,443:32670/TCP   10s

使用量課金型ロードバランサーの作成

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

説明

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

インスタンスの課金タイプ。有効値:

  • PayBySpec:スペック課金。

  • PayByCLCU:使用量課金。

デフォルト値: PayBySpec

重要
  • Cloud Controller Manager (CCM) バージョン v2.5.0 以降では、デフォルト値が PayByCLCU に変更されます。

  • 使用量課金型のロードバランサーには仕様を設定できません。そのため、値を PayByCLCU に設定し、同時に service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec アノテーションを使用することはできません。

v2.4.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

リスナーの操作

TCP リスナーのセッション維持タイムアウトの設定

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

説明

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

TCP リスナーのセッション維持タイムアウトを秒単位で設定します。デフォルトでは、この設定はロードバランサー上のすべての TCP リスナーに適用されます。

値は 0 から 3600 までの整数である必要があります。値 0 はセッション維持を無効にします。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

スティッキーセッション (Cookie の挿入) の設定

アノテーション: 利用可能なアノテーションは次の表に記載されています。Cookie の挿入メソッドを使用するには、以下に記載されている 4 つのアノテーションが必要です。

  • この機能は、HTTP または HTTPS プロトコルを使用するロードバランサーインスタンスのみをサポートします。

  • 複数の HTTP または HTTPS リスナーポートを設定した場合、スティッキーセッションの設定はデフォルトですべてに適用されます。

アノテーション

説明

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

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session

スティッキーセッションを有効にするかどうかを指定します。このアノテーションは HTTP および HTTPS リスナーにのみ適用されます。有効値:

  • on

  • off

デフォルト値: off

詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。

v1.9.3 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type

スティッキーセッションのタイプ。このアノテーションは HTTP および HTTPS リスナーにのみ適用されます。このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-sessionon に設定されている場合に必要です。有効値:

  • insert:Cookie を挿入します。

  • server:Cookie を書き換えます。

詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。

v1.9.3 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout

Cookie のタイムアウト。このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-sessionon に、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-typeinsert に設定されている場合に必要です。単位は秒です。値の範囲は [1, 86400] です。

詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。

v1.9.3 以降

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

サーバーで設定されている Cookie の名前。

名前は 1~200 文字の長さで、ASCII 文字と数字のみを含む必要があります。名前にはカンマ (,)、セミコロン (;)、スペースを含めることはできません。名前はドル記号 ($) で始めることはできません。

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-sessionon に、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-typeserver に設定されている場合に必要です。

詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。

v1.9.3 以降

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

アクセス制御リストの設定

アノテーション: 次の 3 つのアノテーションが必要です。

これらのアノテーションを使用してアクセス制御付きのロードバランサーを作成する前に、クラシックロードバランサー (CLB) コンソールでアクセス制御リストを作成し、その ID (acl-id) を記録してください。

アノテーション

説明

CCM バージョン

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status

アクセス制御を有効にするかどうかを指定します。有効値:

  • on

  • off

デフォルト: off

v1.9.3.164-g2105d2e-aliyun 以降

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

リスナーのアクセス制御リストの ID。このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status"on" に設定されている場合に必要です。

v1.9.3.164-g2105d2e-aliyun 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type

アクセス制御のタイプ。有効値:

  • white:アクセス制御リストで指定された IP アドレスまたはアドレスブロックからのリクエストのみを転送します。ホワイトリストを有効にしても IP アドレスを追加しない場合、リスナーはすべてのリクエストを転送します。

  • black:アクセス制御リストで指定された IP アドレスまたはアドレスブロックからのリクエストをブロックします。ブラックリストを有効にしても IP アドレスを追加しない場合、リスナーはすべてのリクエストを転送します。

v1.9.3.164-g2105d2e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}" # 複数のアクセス制御リストはサポートされていません。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

ロードバランサーのポートフォワーディングの設定

ポートフォワーディングは、HTTP ポートからのリクエストを HTTPS ポートにリダイレクトします。

アノテーション: 次の表に、必要な 3 つのアノテーションを示します。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

Alibaba Cloud 上の証明書の ID。

CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。

説明

証明書を作成するには、「Alibaba Cloud 発行の証明書の選択」をご参照ください。

v1.9.3.164-g2105d2e-aliyun 以降

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

HTTP リクエストを指定された HTTPS ポートに転送します。例:80:443

v1.9.3.164-g2105d2e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
  name: nginx
  namespace: default
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

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

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

説明

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

スケジューリングアルゴリズムを指定します。有効値:

  • wrr:重み付けラウンドロビン。重みが大きいバックエンドサーバーがより多くのリクエストを受け取ります。

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

  • sch:ソース IP ハッシュ (一貫性ハッシュ)。同じソース IP アドレスからのリクエストを同じバックエンドサーバーにルーティングします。

  • tch:4 タプル (ソース IP アドレス、宛先 IP アドレス、ソースポート、宛先ポート) に基づく一貫性ハッシュ。同じフローからのリクエストを同じバックエンドサーバーにルーティングします。

デフォルト値: rr

詳細については、CLB リスナーを作成するための API リファレンスの Scheduler パラメーターをご参照ください。例:「CreateTCPListener」。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

UDP リスナーの作成

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: UDP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

HTTP リスナー

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

  • ヘルスチェック:デフォルトでは、HTTP リスナーのヘルスチェックは無効になっています。バックエンドサービスが利用可能であることを確認するために、リスナーポートに HTTP または TCP のヘルスチェックを設定してください。

  • クラスター内からクラシックロードバランサー (CLB) の IP アドレスを使用して Service にアクセスすると、リクエストトラフィックが傍受され、アクセスに問題が発生する可能性があります。トラフィックを強制的に CLB を経由してヘアピンさせるには、「サービスのホスト名の設定」で説明されているように、必要なアノテーションを追加します。詳細については、「クラスター内から LoadBalancer Service の外部 IP アドレスにアクセスする際の注意事項」をご参照ください。

説明

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

HTTPS リスナーの作成

アノテーション: 次の表に、利用可能なアノテーションを示します。

CLB は HTTPS リクエストを復号し、HTTP リクエストとしてバックエンド Pod に送信します。

  • ヘルスチェック:デフォルトでは、HTTPS リスナーのヘルスチェックは無効になっています。バックエンドサービスが利用可能であることを確認するために、リスナーポートに HTTP または TCP のヘルスチェックを設定してください。

  • クラスター内からクラシックロードバランサー (CLB) の IP アドレスを使用して Service にアクセスすると、リクエストトラフィックが傍受され、アクセスに問題が発生する可能性があります。トラフィックを強制的に CLB を経由してヘアピンさせるには、「サービスのホスト名の設定」で説明されているように、必要なアノテーションを追加します。詳細については、「クラスター内から LoadBalancer Service の外部 IP アドレスにアクセスする際の注意事項」をご参照ください。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

Alibaba Cloud からの証明書 ID。

CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。

説明

証明書を作成するには、「Alibaba Cloud 署名付き証明書の選択」をご参照ください。

v1.9.3.164-g2105d2e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

拡張ドメイン証明書の設定

アノテーション: 次の表に、利用可能なアノテーションを示します。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

Alibaba Cloud からの証明書 ID。

CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。

説明

証明書を作成するには、「Alibaba Cloud 署名付き証明書の選択」をご参照ください。

v1.9.3.164-g2105d2e-aliyun 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions

{domain_name}:{certificate_id} 形式で追加のドメイン名と証明書 ID を指定します。複数のエントリはカンマ (,) で区切ります。

CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。

v2.13.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions: "${DOMAIN_1}:${CERT_ID_1},${DOMAIN_2}:${CERT_ID_2}"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

ヘルスチェック付きリスナー

TCP ヘルスチェック

アノテーション: 以下のすべてのアノテーションが必要です。

TCP ポートでは、ヘルスチェックはデフォルトで有効になっています。

アノテーション

説明

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

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

TCP および UDP リスナーのヘルスチェックを有効または無効にします。有効値:

  • on

  • off

デフォルト値: on

v2.6.0 以降

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

ヘルスチェックタイプを指定します。有効値:

  • tcp

  • http

デフォルト値: tcp。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v1.9.3 以降

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

TCP ヘルスチェックの応答タイムアウトを指定します。バックエンドの Elastic Compute Service (ECS) インスタンスがこの時間内に応答しない場合、ヘルスチェックは失敗します。単位:秒。値の範囲:[1, 300]。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout の値が service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval の値より小さい場合、このタイムアウトは無視され、代わりに間隔の値が使用されます。デフォルト値: 5。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v1.9.3 以降

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

バックエンドサーバーのヘルスステータスを fail から success に変更するために必要な連続した成功したヘルスチェックの回数を指定します。

値の範囲:[2, 10]。デフォルト値: 3。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v1.9.3 以降

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

バックエンドサーバーのヘルスステータスを success から fail に変更するために必要な連続した失敗したヘルスチェックの回数を指定します。値の範囲:[2, 10]。デフォルト値: 3。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v1.9.3 以降

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

ヘルスチェックの間隔を秒単位で指定します。値の範囲:[1, 50]。デフォルト値: 2。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "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: "3"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

UDP ヘルスチェック

アノテーション: 以下の表のアノテーションが必要です。

UDP ポートでは、ヘルスチェックはデフォルトで有効になっています。

アノテーション

説明

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

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

TCP および UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効値:

  • on

  • off

デフォルト値: on

v2.6.0 以降

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

ヘルスチェック応答のタイムアウト期間。バックエンドサーバーがこの期間内に応答しない場合、ヘルスチェックは失敗します。単位:秒。値は 1 から 300 までの整数である必要があります。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout の値が service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval の値より小さい場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout の設定は無効になり、タイムアウトは service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval の値に設定されます。デフォルト値は 5 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

v1.9.3 以降

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

バックエンドサーバーを正常とマークするために必要な連続した成功したヘルスチェックの回数。

値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

v1.9.3 以降

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

バックエンドサーバーを異常とマークするために必要な連続した失敗したヘルスチェックの回数。値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

v1.9.3 以降

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

ヘルスチェックの間隔 (秒単位)。値は 1 から 50 までの整数である必要があります。デフォルト値は 2 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: UDP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

TCP および UDP ヘルスチェックの無効化

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

説明

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

TCP および UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効値:

  • on

  • off

デフォルト値: on

v2.6.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" # ヘルスチェックを無効にします。
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

HTTP ヘルスチェック

アノテーション: 次の表に、利用可能なアノテーションを示します。

アノテーション

説明

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

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

有効値:

  • on:TCP リスナーはデフォルトで on であり、変更できません。TCP リスナーに対してこのアノテーションパラメーターを変更する必要はありません。

  • off:HTTP リスナーはデフォルトで off です。

デフォルト値: off

v1.9.3 以降

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

ヘルスチェックタイプを指定します。有効値:

  • tcp

  • http

デフォルト値: tcp

詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

ヘルスチェック用の URI。このアノテーションは HTTP ヘルスチェックにのみ適用されます。

v1.9.3 以降

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

ヘルスチェックが成功したことを示す HTTP ステータスコード。複数のコードはカンマ (,) で区切ります。有効値:

  • http_2xx

  • http_3xx

  • http_4xx

  • http_5xx

デフォルト値: http_2xx

詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

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

  • $_ip:ヘルスチェックにバックエンドサーバーのプライベート IP アドレスを使用します。アノテーションを省略した場合のデフォルトです。

  • domain:1~80 文字のドメイン名で、英字、数字、ピリオド (.)、ハイフン (-) のみを含みます。

詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

ヘルスチェック応答を待つ最大時間。バックエンドの ECS インスタンスがこの期間内に応答しない場合、ヘルスチェックは失敗します。

単位:秒。値の範囲:[1, 300]。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout の値が service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval の値より小さい場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout の設定は無視され、タイムアウトは service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval アノテーションの値にデフォルト設定されます。

詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

失敗したバックエンドサーバーを正常とマークするために必要な連続した成功したヘルスチェックの回数。

値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

正常なバックエンドサーバーを失敗とマークするために必要な連続した失敗したヘルスチェックの回数。値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

ヘルスチェックの間隔 (秒単位)。値は 1 から 50 までの整数である必要があります。デフォルト値は 2 です。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

v1.9.3 以降

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

ヘルスチェックの HTTP メソッド。有効値:

  • head

  • get

v2.3.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    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-healthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    # オプション。ヘルスチェックの HTTP ステータスコードを設定します。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
    # オプション。ヘルスチェックのドメイン名を設定します。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
    # オプション。ヘルスチェックメソッドを設定します。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

接続ドレインの有効化

アノテーション: この機能を有効にするには、次の表で説明する両方のアノテーションを指定する必要があります。

この機能は TCP および UDP リスナーのみをサポートします。

アノテーション

説明

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

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

接続ドレインを有効または無効にします。

  • on

  • off

v2.0.1 以降

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

接続ドレインのタイムアウト (秒単位)。値の範囲:10~900。

v2.0.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    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:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

リスナーリクエストヘッダーの設定

アノテーション: 利用可能なアノテーションは次の表に記載されています。

HTTP と HTTPS のみがサポートされています。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto

'X-Forwarded-Proto' リクエストヘッダーを使用してリスナープロトコルを取得するかどうかを指定します。有効値:

  • on

  • off

デフォルト値: off

v2.1.0 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport

'XForwardedFor_SLBPORT' リクエストヘッダーを使用してロードバランサーインスタンスのリスナーポートを取得するかどうかを指定します。有効値:

  • on

  • off

デフォルト値: off

v2.9.1 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport

'XForwardedFor_ClientSrcPort' リクエストヘッダーを使用してクライアントのソースポートを取得するかどうかを指定します。有効値:

  • on

  • off

デフォルト値: off

v2.9.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

接続アイドルタイムアウト

アノテーション: 複数。次の表をご参照ください。

HTTP と HTTPS のみがサポートされています。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

リスナーの接続アイドルタイムアウトを秒単位で指定します。値は 1 から 60 までである必要があります。

デフォルト: 15

v2.1.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

リスナーの HTTP/2 の無効化

アノテーション: この機能は、次の表にリストされているアノテーションを使用します。

この機能は HTTPS リスナーにのみ適用されます。

アノテーション

説明

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

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

複数の値をカンマ (,) で区切ります。例:https:443,http:80

v1.9.3 以降

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

Alibaba Cloud 上の証明書の ID。

CLB コンソールにログインし、[証明書管理] ページで証明書 ID を確認します。

説明

証明書を作成するには、「Alibaba Cloud 署名付き証明書の選択」をご参照ください。

v1.9.3.164-g2105d2e-aliyun 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled

HTTP/2 を有効または無効にします。有効値:

  • on

  • off

デフォルト値: on

v2.1.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

リスナーリクエストタイムアウトの設定

アノテーション: 次の表に、利用可能なアノテーションを示します。

HTTP および HTTPS リスナーのみがサポートされています。

アノテーション

説明

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

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

複数の値をカンマで区切ります。例:https:443,http:80

v1.9.3 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout

リクエストタイムアウト (秒単位)。値は 1 から 180 までの整数である必要があります。デフォルト値: 60。

バックエンドサーバーが指定されたタイムアウト内に応答しない場合、ロードバランサーはクライアントに HTTP 504 エラーを返します。

v2.3.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

確立済み接続のタイムアウトの設定

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

TCP プロトコルのみがサポートされています。

説明

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

確立済み接続のタイムアウト (秒単位)。有効値:[10, 900]。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

v2.3.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

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

アノテーション: 次の表に、利用可能なアノテーションを示します。

HTTPS プロトコルのみがサポートされています。

アノテーション

説明

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

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

複数の値をカンマで区切ります。例:https:443,http:80

v1.9.3 以降

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

Alibaba Cloud 上の証明書の ID を指定します。

ID を確認するには、CLB コンソールにログインし、[証明書管理] ページに移動します。

説明

証明書を作成するには、「Alibaba Cloud 発行の証明書の選択」をご参照ください。

v1.9.3.164-g2105d2e-aliyun 以降

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

セキュリティポリシーは、HTTPS リスナーでサポートされる TLS プロトコルバージョンと暗号スイートを定義します。詳細については、「CreateLoadBalancerHTTPSListener」をご参照ください。有効値:

  • 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

v2.4.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
  name: nginx
  namespace: default
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

リスナーでの TCP と UDP

説明

この機能には Kubernetes クラスター v1.24 以降が必要です。ACK クラスターの K8s バージョンをアップグレードするには、「ACK クラスターの K8s バージョンのアップグレード」をご参照ください。

apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 81
  selector:
    app: nginx
  sessionAffinity: None
  type: LoadBalancer

Proxy Protocol の設定

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

クラスター内から Cloud Load Balancer (CLB) の IP アドレスを使用してサービスにアクセスすると、トラフィックが中断され、アクセスに問題が発生する可能性があります。トラフィックを強制的に CLB を経由してヘアピンさせるには、「サービスのホスト名の設定」で説明されているように、必要なアノテーションを追加します。詳細については、「クラスター内で LoadBalancer Service の外部 IP アドレスにアクセスする際の注意事項」をご参照ください。

説明

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

TCP および UDP リスナーの Proxy Protocol を設定します。有効にすると、リスナーは Proxy Protocol を使用してクライアントのソースアドレスをバックエンドサーバーに渡します。有効値:

  • on

  • off

デフォルト: off

重要

この機能はシームレスなオンライン変更をサポートしていません。Proxy Protocol のオン/オフを切り替えるには、サービスの再起動が必要です。そのため、この設定は慎重に行ってください。

v2.6.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

バックエンドサーバーグループの一般的な操作

特定のラベルを持つワーカーノードの使用

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

説明

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

ラベルに基づいて、クラシックロードバランサー (CLB) インスタンスのバックエンドサーバーとして追加するワーカーノードを指定します。複数のラベルはカンマ (,) で区切ります。例:"k1=v1,k2=v2"。複数のラベルは AND ロジックを使用します。このアノテーションは、バックエンドサーバータイプが ecs に設定されている場合にのみ適用されます。

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

Pod をホストするノードの使用

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

デフォルトでは、externalTrafficPolicy は Cluster に設定されており、クラスター内のすべてのノードがバックエンドサーバーグループに追加されます。Local モードでは、サービスの Pod を実行するノードのみがバックエンドサーバーになります。

説明

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

スケジューリングアルゴリズム。有効値:

  • wrr:重み付けラウンドロビン。重みが大きいバックエンドサーバーがより多くのリクエストを受け取ります。

    Local モードのサービスでは、スケジューリングアルゴリズムを重み付けラウンドロビン (wrr) に設定する必要があります。

    説明

    CCM バージョン v1.9.3.164-g2105d2e-aliyun 以降では、サービスの externalTrafficPolicyLocal に設定されている場合、CCM は実行中の Pod の数に基づいて各ノードの重みを自動的に設定します。重みの計算方法の詳細については、「Local モードでノードの重みはどのように自動設定されますか?」をご参照ください。

  • rr:ラウンドロビン。リクエストをバックエンドサーバーに順次分散します。

デフォルト値: rr

v1.9.3 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer

スケジュール不可 ノードの削除

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

説明

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

SchedulingDisabled ステータスのノードをクラシックロードバランサー (CLB) インスタンスのバックエンドサーバーグループから削除するかどうかを指定します。有効値:

  • on[スケジュール不可] 状態のノードを CLB バックエンドサーバーグループから削除します。

  • offkubectl cordon および kubectl drain コマンドはノードを [スケジュール不可] とマークします。この値は、[スケジュール不可] 状態のノードを CLB バックエンドサーバーグループ内に保持します。

デフォルト値: off

v1.9.3.164-g2105d2e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
  name: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 30080
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

Pod ENI をバックエンドサーバーグループにアタッチ

アノテーションservice.beta.kubernetes.io/backend-type

説明

デフォルト

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

クラシックロードバランサー (CLB) インスタンスのバックエンドサーバーのタイプ。有効値:

  • eni:Pod を CLB バックエンドサーバーグループにアタッチし、ネットワーク転送性能を向上させます。この値は Terway ネットワークモードにのみ適用されます。

    service.beta.kubernetes.io/backend-type: "eni" アノテーションを変更することで、値を eni から ecs に変更して、Elastic Compute Service (ECS) インスタンスを CLB バックエンドサーバーグループにアタッチすることもできます。

  • ecs:Elastic Compute Service (ECS) インスタンスを CLB バックエンドサーバーグループにアタッチします。

  • Flannel ネットワークモード: ecs

  • Terway ネットワークモード:

    • 2020 年 8 月 10 日より前に作成された Terway クラスターの場合: ecs

    • 2020 年 8 月 10 日以降に作成された Terway クラスターの場合: eni

v1.9.3.164-g2105d2e-aliyun 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/backend-type: "eni"
  name: nginx
spec:
  ports:
  - name: http
    port: 30080
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer

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

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

既存の VServer グループを再利用します。このアノテーションは、既存のクラシックロードバランサー (CLB) インスタンスを再利用する場合にのみ適用されます。使用例については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。

Service のトラフィックの重みの設定

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

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

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

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

説明

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

Service の調整中に VServer グループ内のバックエンドサーバーの重みの更新をスキップするかどうかを指定します。これは、バックエンドサーバーの重みが別のメカニズムによって管理されている場合に便利です。有効値:

  • on

  • off

デフォルト値: off

v2.11.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer

バックエンドサーバーのデフォルトの重みの設定

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

説明

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

バックエンドサーバーグループ内のサーバーのデフォルトの重みを設定します。重みが大きいバックエンドサーバーは、より多くのトラフィックを受け取ります。

値は 0 から 100 までの整数である必要があります。このアノテーションを省略した場合、システムはネットワークタイプに基づいてデフォルトの重みを使用します。

この設定は、バックエンドインスタンスが Elastic Compute Service (ECS) インスタンスであり、Service の externalTrafficPolicyLocal に設定されている場合には適用されません。

v2.14.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    # バックエンドサーバーグループ内のサーバーのデフォルトの重みを 35 に設定します。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
  name: nginx
  namespace: default
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  type: LoadBalancer