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

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

最終更新日:Dec 27, 2025

Service の YAML ファイルでアノテーションを使用して、Server Load Balancer (SLB) インスタンス、リスナー、バックエンドサーバーグループなどのリソースを設定し、幅広いロードバランシング機能を利用できます。

インデックス

カテゴリ

機能カテゴリ

設定リンク

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

CLB インスタンスの一般的な操作

SLB インスタンスの作成

既存インスタンスの指定

SLB インスタンスの設定

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

リスナーの一般的な操作

セッション維持の設定

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

高度な設定

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

設定管理

関連ドキュメント

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

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

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

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

    例:

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

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

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

CLB インスタンスの一般的な操作

インターネット向け 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

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) コンソールで新しいインスタンスを手動で作成してください。

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) を追加することはできません。

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

既存の SLB インスタンスをバインドする際に、CLB インスタンスのリスナーを強制的に上書きするかどうかを指定します。有効値:

  • "true":リスナーを上書きします。この設定は現在のサービスのリスナーのみを上書きし、他のリスナーには影響しません。

  • "false":上書きしません。

デフォルト値: "false"

重要

CLB インスタンスを再利用し、force-override"true" に設定する場合、複数の Service が 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 インスタンスは、プライマリゾーンとセカンダリゾーンをサポートしていません。SLB インスタンス作成ページの情報が優先されます。

アノテーション

説明

サポートされる 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 (Virtual Private Cloud) に属している必要があります。

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

VPC コンソールにログインして vSwitch ID をクエリできます。

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

VPC コンソールにログインして vSwitch ID をクエリできます。

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"。CCM v2.10.0 以降では、作成されたインスタンスと再利用されたインスタンスのタグを変更できます。

重要

Service にこのアノテーションを追加して追加のタグを指定した後、コンソールで対応する 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 タイプの Service 用に作成された SLB インスタンスの場合、CLB コンソールで手動で削除保護を有効にしても、kubectl delete svc {your-svc-name} コマンドを実行することで、Service に関連付けられた 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 は指定後に変更できません。Alibaba Cloud Resource Management プラットフォームでリソースグループ ID をクエリできます。

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

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

次の項目に注意してください:

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

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

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

v2.3.0 以降

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

期待される出力:

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

従量課金 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

Service 削除時の自動作成 SLB インスタンスの保持

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

説明

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

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

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

値:

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

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

重要

この操作は、サービスタイプを変更するのではなく、サービスを削除することによって実行してください。そうしないと、サービスが以前に保持されていた 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 リスナーのセッション維持 (Cookie の挿入) の設定

アノテーション: この操作では、以下の表で説明するアノテーションを使用します。クッキーを挿入するには、以下の 4 つのアノテーションが必要です。

  • この機能は HTTP および HTTPS リスナーでのみサポートされています。

  • 複数の 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

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

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

説明

サポートされる 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 に転送されます。

アノテーション

説明

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

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

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 ステータスコードはカンマ (,) で区切ります。有効値:

  • 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

セキュリティポリシーには、オプションの TLS バージョンと HTTPS でサポートされる暗号スイートが含まれます。詳細については、「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 クラスターの Kubernetes バージョンの更新」をご参照ください。

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

説明

サポートされる 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) に設定する必要があります。

    説明

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

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

  • 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

CLB インスタンスのバックエンドに Pod ENI を直接アタッチ

アノテーション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 グループを再利用できます。この機能は、既存の SLB インスタンスを再利用する場合にのみ利用可能です。詳細と例については、「SLB インスタンスを再利用してクラスター間でサービスをデプロイ」をご参照ください。

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

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

複数の Service が同じ SLB インスタンスを再利用する場合、このアノテーションを使用して現在の Service の重みを設定し、受信するトラフィックを制御できます。このアノテーションは、既存の 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