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

Container Service for Kubernetes:アノテーションを用いた Classic Load Balancer の設定

最終更新日:Feb 27, 2026

Service の YAML ファイル内でアノテーションを使用すると、Classic Load Balancer(CLB)インスタンス、リスナー、およびバックエンドサーバーグループの 3 つのレベルでリソースを設定できます。これにより、幅広いロードバランシング機能を利用できます。

目次

カテゴリ

機能分類

設定リンク

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

CLB インスタンスの代表的な操作

SLB インスタンスの作成

既存のインスタンスの指定

SLB インスタンスの構成

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

リスナーの代表的な操作

セッション維持の設定

ポートおよびプロトコルの構成

高度な構成

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

構成管理

関連ドキュメント

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

  • アノテーションは大文字と小文字を区別します。

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

  • 2019年9月11日時点から、alicloud は、annotations フィールドで alibaba-cloud に更新されました。

    例:

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

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

    システムは、alicloud 形式との互換性を維持しています。そのため、特別な変更を行う必要はありません。

CLB インスタンスの代表的な操作

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

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

イントラネット SLB インスタンスの作成

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

説明

対応する CCM バージョン

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

  • internet:サービスがインターネット経由でアクセスされます。CLB インスタンスのアドレスタイプインターネットである必要があります。

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

デフォルト値:internet

SLB インスタンスの vSwitch の指定を参照し、CLB インスタンスの vSwitch を手動で指定することを推奨します。vSwitch を指定しない場合、システムは CCM コンポーネントのバージョンに基づいて自動的に選択します:

  • v2.13.0 より前のバージョン:クラスターのコントロールプレーンで最初に設定された vSwitch がデフォルトで使用されます。

  • v2.13.0 以降:利用可能なすべての vSwitch の中から 1 つが自動的に選択されます。

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

SLB インスタンスの仕様の指定

アノテーション:以下の表に示す複数のアノテーションが利用可能です。

アノテーション

説明

対応する CCM バージョン

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

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

  • PayBySpec:仕様課金。

  • PayByCLCU:LCU 課金。

デフォルト値:PayBySpec

重要
  • Cloud Controller Manager v2.5.0 以降では、デフォルト値が PayByCLCU に変更されています。

  • LCU 課金の SLB インスタンスでは仕様を設定できません。つまり、PayByCLCU の値は、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec アノテーションと併用できません。

v2.4.0 以降

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

SLB インスタンスの仕様。このパラメーターを使用して、特定の仕様の CLB インスタンスを作成したり、既存の 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

既存の SLB インスタンスの利用

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

説明

対応する CCM バージョン

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

  • 既存の LoadBalancer サービスに対して再利用アノテーションを追加または変更しないでください。この操作は再利用の失敗や、CCM によって作成された元のロードバランサーの適切な解放を妨げる可能性があります。

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

  • デフォルトでは、既存の SLB インスタンスを利用する際にそのリスナーは上書きされません。既存のリスナーを強制的に上書きするには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true" に設定します。この設定は、現在のサービスに関連付けられたリスナーのみを上書きし、他のリスナーには影響しません。

    説明

    デフォルトでは、既存の SLB インスタンスの再利用時にリスナーを上書きしない理由は以下のとおりです:

    • 既存の SLB インスタンスのリスナーにサービスがバインドされている場合、強制的な上書きによりサービス中断が発生する可能性があります。

    • CCM は限定的なバックエンド構成のみをサポートしており、複雑な構成には対応できません。複雑なバックエンド構成が必要な場合は、コンソールでリスナーを構成し、上書きを回避できます。

    これらの理由から、リスナーの強制上書きは推奨されません。ただし、既存の SLB インスタンスのリスナーポートが使用されていない場合は、強制的に上書きしても問題ありません。

  • (v2.10.0 より前のバージョンの場合)既存の SLB インスタンスを利用する際には、追加タグ(annotation: 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

既存の SLB インスタンスの利用と既存リスナーの強制上書き

アノテーション:以下の表に示す複数のアノテーションが利用可能です。既存リスナーの強制上書きは、ポート競合が発生した場合に既存のリスナーを削除します。

アノテーション

説明

対応する CCM バージョン

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

重要

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

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

  • デフォルトでは、既存の SLB インスタンスを利用する際にそのリスナーは上書きされません。既存のリスナーを強制的に上書きするには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true" に設定します。この設定は、現在のサービスに関連付けられたリスナーのみを上書きし、他のリスナーには影響しません。

    説明

    デフォルトでは、既存の SLB インスタンスの再利用時にリスナーを上書きしない理由は以下のとおりです:

    • 既存の SLB インスタンスのリスナーにサービスがバインドされている場合、強制的な上書きによりサービス中断が発生する可能性があります。

    • CCM は限定的なバックエンド構成のみをサポートしており、複雑な構成には対応できません。複雑なバックエンド構成が必要な場合は、コンソールでリスナーを構成し、上書きを回避できます。

    これらの理由から、リスナーの強制上書きは推奨されません。ただし、既存の SLB インスタンスのリスナーポートが使用されていない場合は、強制的に上書きしても問題ありません。

  • (v2.10.0 より前のバージョンの場合)既存の SLB インスタンスを利用する際には、追加タグ(annotation: 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

既存の Server Load Balancer をアタッチする際に、サービスに基づいて CLB リスナー構成を同期するかどうかを決定します。

  • "true":CCM は、サービス構成に基づいて(作成、更新、削除)サービスに関連付けられた CLB リスナーを自動的に管理します。CCM によって管理されていないリスナーには影響しません。

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

デフォルト値:"false"

重要

既存の CLB インスタンスを再利用し、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

SLB インスタンスのプライマリゾーンおよびセカンダリゾーンの指定

アノテーション:以下の表に示す複数のアノテーションが利用可能です。プライマリゾーンおよびセカンダリゾーンは、インスタンス作成後に変更できません。

一部のリージョンでは、SLB インスタンスがプライマリゾーンおよびセカンダリゾーンをサポートしていません。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

帯域幅課金の SLB インスタンスの作成

アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 2 つのアノテーションは必須です。

アノテーション

説明

対応する CCM バージョン

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

SLB インスタンスの課金方法。有効値:

  • paybytraffic

  • paybybandwidth

デフォルト値:paybytraffic

v1.9.3 以降

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

SLB インスタンスの帯域幅。これはピーク帯域幅です。デフォルト値は 50 です。このパラメーターはインターネット向け SLB インスタンスにのみ適用されます。その他の制限事項については、「インターネット向け SLB インスタンスの課金方法の変更」をご参照ください。

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

SLB インスタンスの vSwitch の指定

アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 2 つのアノテーションは必須です。

アノテーション

説明

対応する CCM バージョン

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

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

  • internet:サービスがインターネット経由でアクセスされます。CLB インスタンスのアドレスタイプインターネットである必要があります。

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

デフォルト値:internet

v1.9.3 以降

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

SLB インスタンスが属する vSwitch の ID。vSwitch は Kubernetes クラスターと同じ VPC 内にある必要があります。

このパラメーターを設定する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type"intranet" に設定する必要があります。

vSwitch の ID を照会するには、VPC コンソールにログインしてください。

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

イントラネット SLB インスタンスの IP アドレスの指定

アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 3 つのアノテーションは必須です。

アノテーション

説明

対応する CCM バージョン

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

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

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

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

デフォルト値:internet

v1.9.3 以降

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

SLB インスタンスが属する vSwitch の ID。vSwitch は Kubernetes クラスターと同じ VPC 内にある必要があります。

このパラメーターを設定する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type を intranet に設定する必要があります。

vSwitch の ID を照会するには、VPC コンソールにログインしてください。

v1.9.3 以降

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

イントラネット SLB インスタンスの 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

SLB インスタンスへの追加タグの付与

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

説明

対応する CCM バージョン

付与するタグのリスト。複数のタグはカンマ(,)で区切ります。例:"k1=v1,k2=v2"。v2.10.0 以降では、作成済みのインスタンスおよび再利用済みのインスタンスのタグを変更できます。

重要

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

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 SLB インスタンスの作成

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

説明

対応する CCM バージョン

SLB インスタンスの 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

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

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

説明

対応する CCM バージョン

SLB インスタンスの削除保護。有効値:

  • on

  • off

デフォルト値:on

重要

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

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

SLB インスタンスの設定変更保護の有効化

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

説明

対応する CCM バージョン

SLB インスタンスの設定変更保護モード。有効値:

  • 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

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

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

説明

対応する CCM バージョン

SLB インスタンスの名前。名前は 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

SLB インスタンスのリソースグループの指定

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

説明

対応する CCM バージョン

SLB インスタンスが属するリソースグループの ID。リソースグループ ID は指定後に変更できません。リソースグループ ID は、Alibaba Cloud 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 アドレスにアクセスするとループバックアクセスの問題が発生します。詳細については、「クライアントが SLB インスタンスにアクセスできない」をご参照ください。

  • このアノテーションを追加しても、CLB インスタンスがドメイン名に自動的にバインドされるわけではありません。バインドするには、ドメインネームサービスページでドメイン名を購入し、CLB インスタンスにバインドしてください。ドメイン名の購入については、「ドメイン名の購入」をご参照ください。

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

LCU 課金の SLB インスタンスの作成

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

説明

対応する CCM バージョン

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

  • PayBySpec:デフォルト値。仕様課金。

  • PayByCLCU:LCU 課金。

デフォルト値:PayBySpec

重要
  • Cloud Controller Manager v2.5.0 以降では、デフォルト値が PayByCLCU に変更されています。

  • LCU 課金の SLB インスタンスでは仕様を設定できません。つまり、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

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

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

説明

対応する CCM バージョン

LoadBalancer サービスを削除すると、そのサービスのために作成された CLB インスタンスが保持され、CLB インスタンスから kubernetes.do.not.delete および ack.aliyun.com のタグが削除されます。vServer グループ内の既存のサーバーも保持されます。

この機能を有効化すると、サービス同期中に PreservedOnDelete 型の Warning イベントが生成されます。このアノテーションを設定した後は、このイベントが存在するかどうかを確認して、機能が有効化されていることを確認してください。

有効値:

  • 空でない場合:保持機能が有効化されます。

  • 空または未設定の場合:保持機能は有効化されません。

重要

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

v2.10.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
  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 リスナーにのみ適用されます。SLB インスタンスで複数の 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

HTTP および HTTPS リスナーのセッション維持の設定(クッキーの挿入)

アノテーション:以下の表に示す複数のアノテーションが利用可能です。クッキーの挿入を行う場合、以下の 4 つのアノテーションは必須です。

  • この機能は、HTTP または HTTPS を使用する SLB インスタンスでのみサポートされます。

  • 複数の 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:クッキーの挿入。

  • server:クッキーの書き換え。

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

v1.9.3 以降

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

クッキータイムアウト期間。このパラメーターは、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

サーバー上で設定されたクッキーの名前。

名前は 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

SLB インスタンスのアクセス制御ポリシーグループの構成

アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 3 つのアノテーションは必須です。

このアノテーションを使用してアクセス制御付きの SLB インスタンスを作成する前に、まずClassic Load Balancer(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 アドレスまたは CIDR ブロックからの要求のみが転送されます。ホワイトリストは、特定の IP アドレスからのみアプリケーションへのアクセスを許可するシナリオに適しています。ホワイトリストを設定すると、ビジネス上のリスクが発生する可能性があります。ホワイトリストを設定すると、ホワイトリストに登録された IP アドレスからのみ SLB リスナーにアクセスできます。ホワイトリストを有効化したが、アクセス制御ポリシーグループに IP アドレスを追加しなかった場合、SLB リスナーはすべての要求を転送します。

  • black:選択したアクセス制御ポリシーグループで指定された IP アドレスまたは CIDR ブロックからのすべての要求が転送されません。ブラックリストは、アプリケーションが特定の IP アドレスからのアクセスを制限するシナリオに適しています。ブラックリストを有効化したが、アクセス制御ポリシーグループに IP アドレスを追加しなかった場合、SLB リスナーはすべての要求を転送します。このパラメーターは、AclStatus パラメーターを on に設定した場合に必須です。

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

SLB インスタンスのリダイレクトポートの指定

ポート転送は、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

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

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

説明

対応する CCM バージョン

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

  • wrr:重み付きラウンドロビン。重みの高いバックエンドサーバーほど多くの要求を受け取ります。

  • rr:ラウンドロビン。外部からの要求は順次バックエンドサーバーに分散されます。

  • sch:ソース IP ハッシュ。同じソース IP アドレスからの要求は、同じバックエンドサーバーにスケジュールされます。

  • tch:4 要素ハッシュ(ソース IP アドレス + 宛先 IP アドレス + ソースポート + 宛先ポート)。同じストリームからの要求は、同じバックエンドサーバーにスケジュールされます。

デフォルト値:rr

このパラメーターの有効値について詳しくは、対応するリスナー種別の API ドキュメントの Scheduler フィールドをご参照ください。たとえば、「TCP リスナーの作成」をご参照ください。

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 アドレスを使用してサービスにアクセスすると、トラフィックがクラスター内で短絡される可能性があり、アクセスの問題が発生することがあります。トラフィックを CLB を経由させるには、「サービスのホスト名の設定」で説明されているアノテーションを追加してください。詳細については、「クラスター内から LoadBalancer サービスの外部 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 リスナーの作成

アノテーション:以下の表に示す複数のアノテーションが利用可能です。

HTTPS 要求は CLB レイヤーで復号化され、その後 HTTP 要求としてバックエンドの Pod に送信されます。

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

  • クラスター内アクセス:クラスター内で CLB IP アドレスを使用してサービスにアクセスすると、トラフィックがクラスター内で短絡される可能性があり、アクセスの問題が発生することがあります。トラフィックを CLB を経由させるには、「サービスのホスト名の設定」で説明されているアノテーションを追加してください。詳細については、「クラスター内から LoadBalancer サービスの外部 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

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-domain-extensions

追加ドメイン名および証明書 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 ヘルスチェックに適用されます。バックエンド 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

連続する 2 回のヘルスチェックの間隔。単位:秒。有効値:[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

ヘルスチェック応答のタイムアウト期間。このパラメーターは TCP ヘルスチェックに適用されます。バックエンド 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 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

v1.9.3 以降

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

ヘルスチェックステータスを fail から success に変更するために必要な、連続した成功したヘルスチェックの回数。

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

v1.9.3 以降

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

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

v1.9.3 以降

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

連続する 2 回のヘルスチェックの間隔。単位:秒。有効値:[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。TCP ヘルスチェックではこのアノテーションを設定する必要はありません。

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 アドレス。IP アドレスを指定するか、このパラメーターを指定しない場合、SLB インスタンスは各バックエンドサーバーのプライベート IP アドレスをヘルスチェック用のドメイン名として使用します。

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

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

v1.9.3 以降

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

ヘルスチェック応答のタイムアウト期間。このパラメーターは HTTP ヘルスチェックに適用されます。バックエンド 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

ヘルスチェックステータスを fail から success に変更するために必要な、連続した成功したヘルスチェックの回数。

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

v1.9.3 以降

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

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

v1.9.3 以降

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

連続する 2 回のヘルスチェックの間隔。単位:秒。有効値:[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 ヘッダーを使用して CLB インスタンスのリスナープロトコルを取得するかどうかを指定します。有効値:

  • on

  • off

デフォルト値:off

v2.1.0 以降

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

X-Forwarded-For-SLBPORT ヘッダーを使用して SLB インスタンスのリスナーポートを取得するかどうかを指定します。有効値:

  • on

  • off

デフォルト値:off

v2.9.1 以降

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

X-Forwarded-For-ClientSrcPort ヘッダーを使用して SLB インスタンスにアクセスするクライアントのポートを取得するかどうかを指定します。有効値:

  • 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

バックエンドサーバーがタイムアウト期間内に応答しない場合、SLB インスタンスは待機を中止し、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。

CLB コンソールにログインし、証明書管理 ページで証明書 ID を確認してください。

説明

証明書を作成するには、「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 クラスターのアップグレード」をご参照ください。

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

TCP および UDP リスナーの Proxy Protocol の設定

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

クラスター内で CLB インスタンスの IP アドレスを使用してサービスにアクセスすると、トラフィックがクラスター内で遮断され、アクセス例外が発生する可能性があります。トラフィックを CLB インスタンス経由で強制的にルーティングさせるには、アノテーションを追加してください。詳細については、「サービスのホスト名の設定」および「クラスター内から LoadBalancer サービスの外部 IP アドレスにアクセスする際の注意点」をご参照ください。

説明

対応する CCM バージョン

TCP および UDP リスナーの Proxy Protocol を構成します。Proxy Protocol を構成すると、クライアントのソース IP アドレスをバックエンドサーバーに伝達できます。有効値:

  • 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 関係です。

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)に設定する必要があります。

    説明

    v1.9.3.164-g2105d2e-aliyun 以降では、external トラフィックポリシーが Local モードに設定されている場合、サービスは自動的にノードの重みをそのノード上の 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

CLB インスタンスのバックエンドからunschedulableノードを除外

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

説明

対応する CCM バージョン

CLB インスタンスのバックエンドから SchedulingDisabled ノードを除外します。有効値:

  • on:状態が unschedulable のノードが、CLB インスタンスのバックエンドサーバーグループから除外されます。

  • offkubectl cordon および kubectl drain コマンドによりノードの状態が unschedulable に設定されます。この場合、状態が unschedulable のノードは、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 を CLB インスタンスのバックエンドに直接アタッチ

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

説明

デフォルト値

対応する CCM バージョン

CLB インスタンスのバックエンドサーバーのタイプ。有効値:

  • eni:この設定を使用すると、Pod を CLB インスタンスのバックエンドにアタッチでき、ネットワーク転送パフォーマンスを向上させることができます。この設定は Terway ネットワークモードでのみ有効です。

    また、eniservice.beta.kubernetes.io/backend-type: "eni" から ecs に手動で変更することで、ECS インスタンスを CLB インスタンスのバックエンドにアタッチすることもできます。

  • ecs: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 インスタンスを再利用する場合にのみ有効です。使用例については、「SLB インスタンスの再利用によるマルチクラスターサービス展開」をご参照ください。

トラフィックを受信するサービスの重みの設定

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

複数のサービスが同一の CLB インスタンスを再利用する場合、このアノテーションを使用して、現在のサービスがトラフィックを受信する際の重みを設定できます。このアノテーションは、既存の vServer グループを再利用する場合にのみ有効です。使用例については、「SLB インスタンスの再利用によるマルチクラスターサービス展開」をご参照ください。

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

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

説明

対応する CCM バージョン

サービス同期中に vServer グループのバックエンドサーバーの重みを更新しないようにスキップします。この設定は、CCM 以外の仕組みでバックエンドサーバーの重みを手動で管理する必要があるシナリオに適しています。有効値:

  • 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