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

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

最終更新日:Mar 07, 2026

Service の YAML ファイルにアノテーションを追加することで、高度なロードバランシング機能を利用して、CLB インスタンス、リスナー、バックエンドサーバーグループを設定できます。

目次

カテゴリ

機能カテゴリ

設定リンク

アノテーションの利用上の注意

CLB の一般的な操作

ロードバランサーの作成

既存インスタンスの使用

ロードバランサーの設定

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

リスナーの一般的な操作

セッション維持の設定

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

詳細設定

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

設定管理

関連ドキュメント

アノテーションの利用上の注意

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

  • アノテーションを使用する前に、このトピックでサポートされている Cloud Controller Manager (CCM) のバージョンを確認してください。CCM をアップグレードするには、「コンポーネントの管理」をご参照ください。CCM のリリースノートについては、「Cloud Controller Manager」をご参照ください。

  • 2019 年 9 月 11 日以降、annotations フィールドが alicloud から alibaba-cloud に変更されました。

    例:

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

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

    システムは引き続き alicloud 形式をサポートしているため、変更を加える必要はありません。

CLB の一般的な操作

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

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

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

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

説明

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

SLB インスタンスが内部向けかどうかを指定します。有効な値:

  • internet:サービスはインターネット経由でアクセス可能です。対応する CLB の アドレスタイプインターネットに設定する必要があります。

  • intranet:サービスはプライベートネットワーク内でのみアクセス可能です。対応する CLB の アドレスタイプイントラネットに設定する必要があります。

デフォルト値: internet

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

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

  • バージョン 2.13.0 以降:利用可能な 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

SLB インスタンスの仕様を指定する

アノテーション: 複数 (次の表を参照)。

アノテーション

説明

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

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

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

  • PayBySpec:仕様による支払い。

  • PayByCLCU:従量課金。

デフォルト値: PayBySpec

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

  • LCU 従量課金の CLB インスタンスの仕様は変更できません。つまり、値 PayByCLCUservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec アノテーションを同時に指定することはできません。

v2.4.0 以降

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

SLB インスタンスの仕様。 このパラメーターを使用して、特定の仕様の SLB インスタンスを作成するか、既存の SLB インスタンスの仕様を更新します。 有効な値:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

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

その他の有効な値については、「CreateLoadBalancer」をご参照ください。

重要

CLB コンソールで SLB インスタンスの仕様を変更すると(仕様課金 SLB インスタンスでのみサポートされています)、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 サーバーの CLB インスタンスや CCM によって作成された CLB インスタンスを再利用しないでください。Classic Load Balancer (CLB) コンソールで手動で新しいインスタンスを作成してください。

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

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

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

    説明

    デフォルトでは、既存の SLB インスタンスを再利用しても既存のリスナーはオーバーライドされません。これには 2 つの理由があります。

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

    • CCM は現在、限定的なバックエンド設定のみをサポートしており、複雑な設定は処理できません。複雑なバックエンド設定の場合は、コンソールでリスナーを手動で設定し、上書きしないでください。

    これらの考慮事項のため、強制的な上書きは推奨されません。既存のリスナーポートが使用されなくなった場合にのみ、強制的に上書きしてください。

  • (v2.10.0 より前の CCM バージョン) 既存の 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 サーバーの CLB インスタンスや CCM によって作成された CLB インスタンスを再利用しないでください。Classic Load Balancer (CLB) コンソールで手動で新しいインスタンスを作成してください。

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

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

    説明

    既存の SLB インスタンスを再利用しても、以下の 2 つの理由により、デフォルトで既存のリスナーがオーバーライドされません。

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

    • CCM は現在、限定的なバックエンド設定のみをサポートしており、複雑な設定は処理できません。複雑なバックエンド設定の場合は、コンソールでリスナーを手動で設定し、上書きしないでください。

    これらの考慮事項のため、強制的な上書きは推奨されません。既存のリスナーポートが使用されなくなった場合にのみ、強制的に上書きしてください。

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

既存の SLB インスタンスにバインドする際に、CCM が Service と CLB リスナーの構成を同期するかどうかを決定します。

  • "true":CCM は Service に関連する CLB リスナー (作成、更新、削除) を自動的に管理します。他のリスナーは影響を受けません。

  • "false":CCM は CLB リスナーを管理しません。

デフォルト値: "false"

重要

既存の CLB を再利用し、force-override"true" に設定する場合、複数の Service で同じリスナーを再利用しないでください。リスナー設定の競合が発生します。

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 インスタンス作成時のプライマリゾーンとセカンダリゾーンの指定

アノテーション: 複数 (次の表を参照)。作成後、プライマリゾーンとセカンダリゾーンは変更できません。

一部のリージョンでは、CLB インスタンスのプライマリゾーンとセカンダリゾーンをサポートしていません。詳細は 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インスタンスを作成

アノテーション: 複数 (次の表を参照)。両方のアノテーションが必要です。

アノテーション

説明

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

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

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

  • paybytraffic

  • paybybandwidth

デフォルト値: paybytraffic

v1.9.3 以降

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

CLB インスタンスの帯域幅制限 (Mbps)。デフォルト値: 50。インターネット向け CLB インスタンスにのみ適用されます。その他の制限については、「インターネット向け CLB インスタンスの課金方法の変更」をご参照ください。

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

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

アノテーション: 複数 (次の表を参照)。両方のアノテーションが必要です。

アノテーション

説明

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

CLB インスタンスの VSwitch ID。VSwitch は Kubernetes クラスターと同じ VPC に属している必要があります。

このパラメーターを設定する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type"intranet" に設定してください。

VSwitch ID は Virtual Private Cloud (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

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

アノテーション: 複数 (次の表を参照)。3 つすべてのアノテーションが必要です。

アノテーション

説明

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

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

CLB インスタンスがイントラネット向けかどうかを指定します。有効な値:

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

  • intranet:サービスはプライベートネットワーク内でのみアクセス可能です。対応する CLB の アドレスタイプイントラネットに設定する必要があります。

デフォルト値: internet

v1.9.3 以降

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

CLB インスタンスの VSwitch ID。VSwitch は Kubernetes クラスターと同じ VPC に属している必要があります。

このパラメーターを設定する場合、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type も intranet に設定してください。

VSwitch ID は Virtual Private Cloud (VPC) コンソールで確認できます。

v1.9.3 以降

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

イントラネット CLB インスタンスの 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"。CCM 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 CLB インスタンスの作成

アノテーション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

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

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

説明

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

CLB インスタンスの削除保護を有効にします。有効な値:

  • on

  • off

デフォルト値: on

重要

LoadBalancer Service によって作成された CLB インスタンスの場合、CLB コンソールで削除保護が有効になっていても、kubectl delete svc {your-svc-name} を使用して関連する CLB インスタンスを削除できます。

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 バージョン

CLB インスタンスの設定変更保護を有効にします。有効な値:

  • 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

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

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

説明

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

CLB インスタンスのリソースグループ 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

Service のホスト名の設定

アノテーション: 複数 (次の表を参照)。

アノテーション

説明

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

Service のホスト名を設定します。ホスト名は DNS の命名規則に準拠する必要があります。

重要な注意点:

  • このアノテーションを追加すると、Service の EXTERNAL-IP がデフォルトの CLB IP から your_service_name に変更されます。クラスター内から CLB IP にアクセスすると、トラフィックは CLB を経由してクラスターに転送されます。

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

  • このアノテーションを追加しても、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

従量課金 CLB インスタンスの作成

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

説明

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

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

  • PayBySpec:デフォルト。仕様による支払い。

  • PayByCLCU:従量課金。

デフォルト値: PayBySpec

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

  • 従量課金 CLB インスタンスの仕様は設定できません。PayByCLCUservice.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 Service を削除する際に、Service によって作成された CLB インスタンスを保持し、CLB インスタンスから kubernetes.do.not.delete および ack.aliyun.com タグを削除します。vServer グループ内の既存のサーバーは変更されません。

有効にすると、Service の同期中に PreservedOnDelete タイプの警告イベントが表示されます。このアノテーションを設定した後、このイベントを確認して正常に有効化されたことを確認してください。

有効な値:

  • 空でない:保持を有効にする。

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

重要

この操作を実行するには、タイプを変更するのではなく、サービスを削除してください。そうしないと、サービスが以前に保持されていた SLB インスタンスに誤って再アタッチされる可能性があります。

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 CLB インスタンスのセッション維持タイムアウトの設定

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

説明

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

セッション維持タイムアウト。TCP リスナーにのみ適用されます。CLB インスタンスに複数の 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 リスナーポートを設定した場合、このセッション維持設定はデフォルトですべてに適用されます。

アノテーション

説明

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

Cookie 処理方法。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

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

CLB インスタンスのアクセス制御ポリシーグループの設定

アノテーション: 複数 (次の表を参照)。3 つすべてのアノテーションが必要です。

このアノテーションを使用する前に、Classic Load Balancer (CLB) コンソールでアクセス制御ポリシーグループを作成し、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

リスナーにアタッチする ACL 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 のみがリスナーにアクセスできます。ホワイトリストを有効にしても IP を追加しない場合、リスナーはすべてのリクエストを転送します。

  • black:選択されたアクセス制御ポリシーグループ内の IP アドレスまたは CIDR ブロックからのすべてのリクエストをブロックします。アプリケーションが特定の IP からのアクセスを制限する場合にブラックリストを使用します。ブラックリストを有効にしても IP を追加しない場合、リスナーはすべてのリクエストを転送します。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

その他の有効な値については、対応するリスナータイプを作成するための CLB 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 を介してサービスにアクセスすると、トラフィックが内部でインターセプトされ、アクセスに失敗することがあります。「Service のホスト名の設定」を参照して、アノテーションを追加してトラフィックを強制的に CLB 経由でルーティングしてください。詳細については、「クラスター内から LoadBalancer Service の External 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 を介してサービスにアクセスすると、トラフィックが内部でインターセプトされ、アクセスに失敗することがあります。「Service のホスト名の設定」を参照して、アノテーションを追加してトラフィックを強制的に CLB 経由でルーティングしてください。詳細については、「クラスター内から LoadBalancer Service の External 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 を {domain}:{certificate-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

ヘルスチェックの間隔。単位:秒。有効な値:[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

ヘルスチェックの間隔。単位:秒。有効な値:[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 を指定するか、このパラメーターを指定しない場合、CLB インスタンスは各バックエンドサーバーのプライベート 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

ヘルスチェックの間隔。単位:秒。有効な値:[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

XForwardedFor_SLBPORT ヘッダーを使用して CLB インスタンスのリスナーポートを取得するかどうかを設定します。有効な値:

  • on

  • off

デフォルト値: off

v2.9.1 以降

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

XForwardedFor_ClientSrcPort ヘッダーを使用して CLB インスタンスにアクセスするクライアントのポートを取得するかどうかを設定します。有効な値:

  • 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

バックエンドサーバーがタイムアウト期間内に応答しない場合、CLB インスタンスは待機を停止し、クライアントに 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 を介して Service にアクセスすると、リクエストトラフィックが内部でインターセプトされ、アクセスが異常になることがあります。詳細については、「Service のホスト名の設定」をご参照ください。これは、アノテーションを追加してトラフィックを強制的に CLB をバイパスさせる方法を説明しています。詳細については、「クラスター内から LoadBalancer Service の External 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

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

指定されたラベルを持つ Worker ノードをバックエンドサーバーとして使用

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

説明

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

ラベルを使用して、CLB バックエンドにアタッチする Worker ノードを指定します。複数のラベルはコンマ (,) で区切ります。例:"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 以降では、外部トラフィックポリシーが 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 バックエンドサーバーグループから スケジュール不可 ノードを削除

アノテーション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 の CLB バックエンドへの直接マウント

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

説明

デフォルト値

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

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

  • eni:Pod を CLB バックエンドにアタッチして、ネットワーク転送パフォーマンスを向上させます。これは Terway ネットワークモードでのみ有効です。

    service.beta.kubernetes.io/backend-type: "eni"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 インスタンスを再利用する場合にのみ有効です。使用例については、「既存の CLB インスタンスを再利用したクラスター間でのサービスのデプロイ」をご参照ください。

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

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

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

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

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

説明

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

Service の同期中に、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