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

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

最終更新日:Nov 21, 2024

さまざまな負荷分散機能を使用するには、ServiceのYAMLファイルにアノテーションを追加して、Classic load Balancer (CLB) インスタンス、リスナー、およびバックエンドサーバーグループを構成します。

目次

カテゴリ

ハイパーリンク

注釈使用法ノート

CLBインスタンスを管理する一般的な操作

リスナーを管理する一般的な操作

バックエンドサーバーグループを管理する一般的な操作

関連ドキュメント

注釈使用法ノート

  • 注釈の値は大文字と小文字を区別します。

  • アノテーションを使用する前に、この機能でサポートされているcloud controller manager (CCM) コンポーネントのバージョンを確認してください。 CCMコンポーネントを更新する方法の詳細については、「コンポーネントの管理」をご参照ください。 CCMコンポーネントのリリースノートの詳細については、「Cloud Controller Manager」をご参照ください。

  • 2019年9月11日以降、annotationsのキーワードalicloudalibaba-cloudに変更されます。

    例:

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

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

    システムは、alicloudキーワードを使用するアノテーションをサポートしています。 既存のアノテーションを変更する必要はありません。

CLBインスタンスを管理する一般的な操作

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

内部対応のCLBインスタンスを作成します。 有効な値:

  • internet: インターネット接続のCLBインスタンスを使用してサービスを公開します。 デフォルト値です。 CLBインスタンスのアドレスタイプインターネットに設定する必要があります。

  • イントラネット: 内部対応のCLBインスタンスを使用してサービスを公開します。 CLBインスタンスのアドレスタイプは、イントラネットに設定する必要があります。

internet

CCM 1.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

指定された仕様を使用するCLBインスタンスの作成

以下の注釈が使用される。

注釈

説明

デフォルト値

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

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

課金方法です。 有効な値:

  • PayBySpec: CLBインスタンスは、仕様に基づいて課金されます。 デフォルト値です。

  • PayByCLCU: CLBインスタンスはLoadbalancer Capacity Unit (LCU) に基づいて課金されます。

重要

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

PayBySpec

CCM 2.4.0以降

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

CLBインスタンスの仕様。 詳細については、「CreateLoadBalancer」をご参照ください。 このアノテーションを使用して、指定された仕様を使用するCLBインスタンスを作成したり、CLBインスタンスの仕様を更新したりできます。

重要

CLBコンソールを使用してCLBインスタンスの仕様を更新すると、CCMはCLBインスタンスを元の仕様に復元できます。 作業は慎重に行ってください。 CLBコンソールを使用して、課金方法を使用するCLBインスタンスの仕様のみを変更できます。

slb.s1.small

CCM 1.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

既存のCLBインスタンスの使用

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id

説明

デフォルト値

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

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

  • デフォルトでは、既存のCLBインスタンスを使用する場合、CLBインスタンスのリスナーは上書きされません。 既存のリスナーを上書きするには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true" に設定します。 この構成は、現在のサービスのリスナーのみを上書きし、他のリスナーには影響しません。

    説明

    次の理由により、CCMは既存のCLBインスタンスのリスナーを上書きしません。

    • CLBインスタンスのリスナーがアプリケーションに関連付けられている場合、リスナーが上書きされた後にサービスが中断される可能性があります。

    • CCMは限られたバックエンド設定をサポートし、複雑な設定を処理できません。 複雑なバックエンド設定を使用するには、コンソールでリスナーを作成します。 リスナーは既存のリスナーを上書きしません。

    したがって、既存のCLBインスタンスのリスナーを上書きしないことを推奨します。 これらのリスナーがリッスンするポートが使用されなくなった場合は、リスナーを強制的に上書きできます。

  • (V2.10.0より前) 既存のCLBインスタンスを使用する場合、アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tagsなどのタグを追加することはできません。

デフォルト値なし

CCM 1.9.3.81-gca19cd4-aliyun以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}" # You can configure only one access control list (ACL). 
  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-id

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

  • デフォルトでは、既存のCLBインスタンスを使用する場合、CLBインスタンスのリスナーは上書きされません。 既存のリスナーを上書きするには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listenersアノテーションを "true" に設定します。 この構成は、現在のサービスのリスナーのみを上書きし、他のリスナーには影響しません。

    説明

    次の理由により、CCMは既存のCLBインスタンスのリスナーを上書きしません。

    • CLBインスタンスのリスナーがアプリケーションに関連付けられている場合、リスナーが上書きされた後にサービスが中断される可能性があります。

    • CCMは限られたバックエンド設定をサポートし、複雑な設定を処理できません。 複雑なバックエンド設定を使用するには、コンソールでリスナーを作成します。 リスナーは既存のリスナーを上書きしません。

    したがって、既存のCLBインスタンスのリスナーを上書きしないことを推奨します。 これらのリスナーがリッスンするポートが使用されなくなった場合は、リスナーを強制的に上書きできます。

  • (V2.10.0より前) 既存のCLBインスタンスを使用する場合、アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tagsなどのタグを追加することはできません。

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

既存のCLBインスタンスのリスナーを上書きするかどうかを指定します。 有効な値:

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

  • "false": リスナーを上書きしません。

重要

既存のCLBインスタンスを使用し、force-overrideアノテーションを "true" に設定した場合、CLBインスタンスのリスナーを複数のサービスに関連付けないでください。 それ以外の場合、これらのサービスがリスナーを上書きすると、構成が競合します。

"false"

CCM 1.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インスタンスは、プライマリゾーンとセカンダリゾーンをサポートしていません。 CLBインスタンス作成ページの実際の情報が優先されます。

注釈

説明

デフォルト値

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

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

プライマリバックエンドサーバーがデプロイされているゾーンのID。

デフォルト値なし

CCM 1.9.3.10-gfb99107-aliyun以降

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

セカンダリバックエンドサーバーがデプロイされているゾーンのID。

デフォルト値なし

CCM 1.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

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

以下の注釈が使用される。 両方の注釈が必要です。

注釈

説明

デフォルト値

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

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

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

  • paybytraffic

  • paybybandwidth

paybytraffic

CCM 1.9.3以降

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

CLBインスタンスの最大帯域幅。 この注釈は、インターネット接続のCLBインスタンスにのみ適用されます。 インターネット接続CLBインスタンスの課金方法の制限の詳細については、「ModifyLoadBalancerInstanceSpec」をご参照ください。

50

CCM 1.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

内部対応のCLBインスタンスを作成するには、値をイントラネットに設定します。 有効な値:

  • internet: インターネット接続のCLBインスタンスを使用してサービスを公開します。 デフォルト値です。 CLBインスタンスのアドレスタイプインターネットに設定する必要があります。

  • イントラネット: 内部対応のCLBインスタンスを使用してサービスを公開します。 CLBインスタンスのアドレスタイプは、イントラネットに設定する必要があります。

internet

CCM 1.9.3以降

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

CLBインスタンスが存在するvSwitchのID。 vSwitchとクラスターは、同じ仮想プライベートクラウド (VPC) にデプロイする必要があります。

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

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

デフォルト値なし

CCM 1.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アドレスを指定する

以下の注釈が使用される。 これらの注釈が必要です。

注釈

説明

デフォルト値

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

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

内部対応のCLBインスタンスを作成するには、値をイントラネットに設定します。 有効な値:

  • internet: インターネット接続のCLBインスタンスを使用してサービスを公開します。 デフォルト値です。 CLBインスタンスのアドレスタイプインターネットに設定する必要があります。

  • イントラネット: 内部対応のCLBインスタンスを使用してサービスを公開します。 CLBインスタンスのアドレスタイプは、イントラネットに設定する必要があります。

internet

CCM 1.9.3以降

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

CLBインスタンスが存在するvSwitchのID。 vSwitchとクラスターは同じVPCにデプロイする必要があります。

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

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

デフォルト値なし

CCM 1.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アドレスは変更できません。

デフォルト値なし

CCM 2.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

CLBインスタンスへの追加タグの追加

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags

説明

デフォルト値

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

CLBインスタンスに追加するタグ。 複数入力する場合は、コンマ (,) で区切ります。 例:"k1=v1,k2=v2" CCM 2.10.0以降のバージョンでは、既存または再利用されたインスタンスのタグを変更できます。

重要

このアノテーションをサービスに追加して追加のタグを指定すると、コンソールでCLBインスタンスタグに対して実行される操作が上書きされる場合があります。

デフォルト値なし

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

CLBインスタンスのIPバージョン。 IPバージョンを変更することはできません。 このアノテーションを使用するには、クラスターのkube-proxyモードがIPVSに設定されていることを確認します。 有効な値:

  • ipv4

  • ipv6 IPv6アドレスは、IPv6ネットワークでのみ使用できます。

ipv4

CCM 1.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

  • オフ

重要

LoadBalancerサービス用に作成されたCLBインスタンスの削除保護をCLBコンソールで手動で有効にした場合、kubectl delete svc {your-svc-name} コマンドを実行してCLBインスタンスを削除できます。

on

CCM 1.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

CLBインスタンスの設定読み取り専用モードの有効化

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection

説明

デフォルト値

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

CLBインスタンスの設定読み取り専用モードを有効にするかどうかを指定します。 有効な値:

  • ConsoleProtection

  • 非保護

ConsoleProtection

CCM 1.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

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

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name

説明

デフォルト値

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

CLBインスタンスの名前。 名前は2 ~ 128文字で、英数字、ピリオド (.) 、アンダースコア (_) 、ハイフン (-) を使用できます。 先頭は英字とする必要があります。

デフォルト値なし

CCM 1.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を照会できます。

デフォルト値なし

CCM 1.9.3.313-g748f81e-aliyun以降

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

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

以下の注釈が使用される。

注釈

説明

デフォルト値

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

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

複数入力する場合は、カンマ (,) で区切ります。 例: https:443,http:80

デフォルト値なし

CCM 1.9.3以降

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

サービスのホスト名を指定します。 ホスト名は、ドメイン名の命名規則に準拠している必要があります。

以下の点にご注意ください。

  • このアノテーションを追加すると、サービスの外部IPアドレスがデフォルトのCLB IPアドレスからyour_service_nameに変わります。 クラスター内からCLB IPアドレスにアクセスする場合、リクエストはまず対応するCLBインスタンスに転送されます。

  • このアノテーションを追加した後、リスナープロトコルがTCPまたはUDPの場合、クラスター内からのリクエストがCLB IPアドレスに転送されるときにループが発生します。 詳細については、

    SLBインスタンスにアクセスできないのはなぜですか?

  • このアノテーションは、ドメイン名をCLBインスタンスに自動的に関連付けません。 ドメイン名コンソールにログインし、ドメイン名を購入してから、ドメイン名をCLBインスタンスに関連付けることができます。 ドメイン名の購入方法の詳細については、「ドメイン名とは」トピックのドメイン名の購入セクションを参照してください。

デフォルト値なし

CCM 2.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: CLBインスタンスは、仕様に基づいて課金されます。 デフォルト値です。

  • PayByCLCU: CLBインスタンスはLoadbalancer Capacity Unit (LCU) に基づいて課金されます。

重要

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

PayBySpec

CCM 2.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

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

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete

説明

デフォルト値

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

LoadBalancerサービスを削除すると、そのサービスを使用して作成されたCLBインスタンスは保持され、CLBインスタンスおよびサーバーグループのkubernetes.do.not.de leteおよびack.aliyun.comタグは削除されます。 サーバグループ内の既存のサーバは保持されます。

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

有効値:

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

  • 値が空または設定されていない場合、保持機能は有効になりません。

重要

この操作を実行するには、サービスの種類を変更する代わりにサービスを削除します。 そうしないと、サービスが誤ってサービスに再関連付けされる可能性があります。

ワークロードへの影響なし

CCM 2.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リスナーがある場合、設定はすべてのTCPリスナーに適用されます。

単位は秒です。 有効な値: 0 ~ 3600 デフォルト値:0 デフォルトでは、セッション維持は無効になっています。 詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

0

CCM 1.9.3以降

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

cookieの挿入によるHTTPまたはHTTPSリスナーのセッション維持の有効化

以下の注釈が使用される。 セッションの永続性を有効にするためにcookieを挿入する場合は、次の注釈が必要です。

  • 次の注釈は、HTTPベースおよびHTTPSベースのCLBインスタンスにのみ適用されます。

  • CLBインスタンスに複数のHTTPまたはHTTPSリスナーがある場合、設定はすべてのHTTPまたはHTTPSリスナーに適用されます。

注釈

説明

デフォルト値

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

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

セッションの継続時間を適用するかどうかを設定します。 HTTP および HTTPS リスナーにのみ適用されます。 有効な値:

  • on: セッション維持を有効にします。

  • off: セッション維持を有効にしません。

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

off

CCM 1.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: cookieを挿入します。

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

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

デフォルト値なし

CCM 1.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」をご参照ください。

デフォルト値なし

CCM 1.9.3以降

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

バックエンドサーバーで設定された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」をご参照ください。

デフォルト値なし

CCM 1.9.3以降

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

複数入力する場合は、カンマ (,) で区切ります。 例: https:443,http:80

デフォルト値なし

CCM 1.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インスタンスのACLの設定

以下の注釈が使用される。 これらの注釈が必要です。

このアノテーションを使用してアクセス制御が設定されたCLBインスタンスを作成する前に、CLBコンソールでACLを作成し、ACLのIDを記録する必要があります。

注釈

説明

デフォルト値

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

service.beta.kubernetes.io/alicloud-loadbalancer-cert-id

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

  • on: アクセス制御を有効にします。

  • off: アクセス制御を有効にしません。

off

CCM 1.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" に設定されている場合に必要です。

デフォルト値なし

CCM 1.9.3.164-g2105d2e-aliyun以降

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

ACL のタイプを設定します。 有効な値:

  • white: ホワイトリスト。 ACLのIPアドレスまたはCIDRブロックからのリクエストのみが転送されます。 IPアドレスホワイトリストは、指定したIPアドレスからアプリケーションへのアクセスのみを許可するシナリオで使用できます。 ホワイトリストが不適切に設定されていると、リスクが発生する可能性があります。 ホワイトリストが設定された後、CLBインスタンスはホワイトリスト内のIPアドレスからのリクエストのみを転送します。 ホワイトリストを有効にしても、ACLにIPアドレスを追加しない場合、すべてのリクエストが転送されます。

  • black: ブラックリスト。 ACLのIPアドレスまたはCIDRブロックからのすべてのリクエストは転送されません。 指定したIPアドレスのみからアプリケーションへのアクセスを拒否するシナリオでは、IPアドレスブラックリストを使用できます。 IPアドレスブラックリストを有効にしても、ブラックリストにIPアドレスを追加しないと、すべてのリクエストが転送されます。 このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-statusアノテーションがonに設定されている場合に必要です。

デフォルト値なし

CCM 1.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

CLBインスタンスのポート転送の設定

ポート転送により、CLBインスタンスはHTTPポートからHTTPSポートにリクエストを転送できます。

以下の注釈が使用される。 これらの注釈が必要です。

注釈

説明

デフォルト値

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

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

複数入力する場合は、カンマ (,) で区切ります。 例: https:443,http:80

デフォルト値なし

CCM 1.9.3以降

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

CLBインスタンスの証明書のID。

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

説明

証明書の作成方法の詳細については、「Alibaba Cloud SSL証明書サービスの証明書の使用」をご参照ください。

デフォルト値なし

CCM 1.9.3.164-g2105d2e-aliyun以降

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

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

デフォルト値なし

CCM 1.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

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

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

説明

デフォルト値

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

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

  • wrr: 重みの大きいバックエンドサーバーは、重みの小さいバックエンドサーバーよりも多くのリクエストを受け取ります。

  • rr: ラウンドロビンアルゴリズムが使用されます。 リクエストはバックエンドサーバーに順番に転送されます。

rr

CCM 1.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

デフォルト値なし

CCM 1.9.3以降

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

HTTPSリスナーの作成

以下の注釈が使用される。

CLBインスタンスのHTTPSリスナーは、HTTPSリクエストをHTTPリクエストに復号化し、バックエンドサーバー上のポッドにリクエストを転送します。

注釈

説明

デフォルト値

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

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

複数入力する場合は、カンマ (,) で区切ります。 例: https:443,http:80

デフォルト値なし

CCM 1.9.3以降

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

CLBインスタンスの証明書のID。

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

説明

証明書の作成方法の詳細については、Alibaba Cloud SSL証明書サービスからの証明書の使用.

デフォルト値なし

CCM 1.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

CCM 2.6.0以降

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

ヘルスチェックのタイプ。 有効な値:

  • tcp

  • http

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

tcp

CCM 1.9.3以降

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

ヘルスチェックのタイムアウト期間。 このアノテーションは、TCP ヘルスチェックに適用されます。 ECS (Elastic Compute Service) インスタンスなどのバックエンドサーバーが、指定されたタイムアウト期間内にヘルスチェック応答を返さない場合、サーバーはヘルスチェックに失敗します。 単位は秒です。 有効な値:1 から 300。

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeoutアノテーションの値がservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-intervalアノテーションの値よりも小さい場合、最初のアノテーションは有効になりません。 タイムアウト期間は、2番目のアノテーションの値に設定されます。 詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

5

CCM 1.9.3以降

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

正常でないバックエンドサーバーが正常であると宣言される前に (失敗から成功まで) 発生する必要があるヘルスチェックの連続成功回数。

設定可能な値は 1 から 100 です。 詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

3

CCM 1.9.3以降

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

正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。 詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

3

CCM 1.9.3以降

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

ヘルスチェックが実行される間隔。 単位は秒です。 有効値:1 〜 50 。 詳細については、「CreateLoadBalancerTCPListener」をご参照ください。

2

CCM 1.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

  • オフ

on

CCM 2.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-timeoutアノテーションの値がservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-intervalアノテーションの値よりも小さい場合、最初のアノテーションは有効になりません。 タイムアウト期間は、2番目のアノテーションの値に設定されます。 詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

5

CCM 1.9.3以降

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

正常でないバックエンドサーバーが正常であると宣言される前に実行する必要があるヘルスチェックの連続成功回数。

設定可能な値は 1 から 100 です。 詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

3

CCM 1.9.3以降

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

正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。 詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

3

CCM 1.9.3以降

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

ヘルスチェックが実行される間隔。 単位は秒です。 有効値:1 〜 50 。 詳細については、「CreateLoadBalancerUDPListener」をご参照ください。

2

CCM 1.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

CCM 2.6.0以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" # Disable health checks.
  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

CCM 1.9.3以降

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

ヘルスチェックのタイプ。 有効な値:

  • tcp

  • http

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

tcp

CCM 1.9.3以降

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

ヘルスチェックに使用するURI (Uniform Resource Identifier) 。 ヘルスチェックのタイプがTCPに設定されている場合、このアノテーションは不要です。

デフォルト値なし

CCM 1.9.3以降

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

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

  • http_2xx

  • http_3xx

  • http_4xx

  • http_5xx

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

http_2xx

CCM 1.9.3以降

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

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

  • $_ip: バックエンドサーバーのプライベートIPアドレス。 IPアドレスが指定されている場合、またはこのパラメーターが指定されていない場合、CLBインスタンスは各バックエンドサーバーのプライベートIPアドレスをヘルスチェックのドメイン名として使用します。

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

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

デフォルト値なし

CCM 1.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アノテーションの値よりも小さい場合、最初のアノテーションは有効になりません。 タイムアウト期間は、2番目のアノテーションの値に設定されます。 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

デフォルト値なし

CCM 1.9.3以降

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

正常でないバックエンドサーバーが正常であると宣言される前に実行する必要があるヘルスチェックの連続成功回数。

設定可能な値は 1 から 100 です。 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

3

CCM 1.9.3以降

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

正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

3

CCM 1.9.3以降

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

ヘルスチェックが実行される間隔。 単位は秒です。 有効値:1 〜 50 。 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。

2

CCM 1.9.3以降

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

複数入力する場合は、カンマ (,) で区切ります。 例: https:443,http:80

デフォルト値なし

CCM 1.9.3以降

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

HTTPリスナーによって使用されるヘルスチェック方法。 有効な値:

  • ヘッド

  • 取得

デフォルト値なし

CCM 2.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"
    # Specify the HTTP status codes for health check. This annotation is optional.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
    # Specify the domain name for health check. This annotation is optional.
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
    # Specify the health check method. This annotation is optional.
    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: 接続のドレインを有効にしません。

デフォルト値なし

CCM 2.0.1以降

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

接続ドレインのタイムアウト期間。 単位は秒です。 有効な値: 10 ~ 900

デフォルト値なし

CCM 2.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

デフォルト値なし

CCM 1.9.3以降

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

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

  • on: X-Forwarded-Protoヘッダーを使用して、CLBインスタンスのリスナープロトコルを取得します。

  • off: CLBインスタンスのリスナープロトコルを取得するためにX-Forwarded-Protoヘッダーを使用しません。

off

CCM 2.1.0以降

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

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

  • on: XForwardedFor_SLBPORTヘッダーを使用して、CLBインスタンスのリスナーポートを取得します。

  • off: XForwardedFor_SLBPORTヘッダーを使用してCLBインスタンスのリスナーポートを取得しません。

off

CCM 2.9.1以降

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

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

  • on: XForwardedFor_ClientSrcPortヘッダーを使用して、CLBインスタンスのリスナーポートを取得します。

  • off: XForwardedFor_ClientSrcPortヘッダーを使用してCLBインスタンスのリスナーポートを取得しません。

off

CCM 2.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

デフォルト値なし

CCM 1.9.3以降

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

リスナーのアイドル接続のタイムアウト期間を指定します。 単位は秒です。 有効な値: 1 ~ 60。

15

CCM 2.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

デフォルト値なし

CCM 1.9.3以降

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

CLBインスタンスの証明書のID。

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

説明

証明書の作成方法の詳細については、Alibaba Cloud SSL証明書サービスからの証明書の使用.

デフォルト値なし

CCM 1.9.3.164-g2105d2e-aliyun以降

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

HTTP/2を有効にするかどうかを指定します。 有効な値:

  • on: HTTP/2を有効にします。

  • off: HTTP/2を有効にしません。

on

CCM 2.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

デフォルト値なし

CCM 1.9.3以降

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

リクエストのタイムアウト期間。 単位は秒です。 有効な値: 1 ~ 180

バックエンドサーバーがタイムアウト期間内に応答しなかった場合、CLBインスタンスは待機を停止し、HTTP 504エラーコードをクライアントに返します。

60

CCM 2.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」をご参照ください。

デフォルト値なし

CCM 2.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

デフォルト値なし

CCM 1.9.3以降

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

CLBインスタンスの証明書のID。

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

説明

証明書の作成方法の詳細については、Alibaba Cloud SSL証明書サービスからの証明書の使用.

デフォルト値なし

CCM 1.9.3.164-g2105d2e-aliyun以降

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

TLSセキュリティポリシー。 各セキュリティポリシーには、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

CCM 2.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 1.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リスナーのプロキシプロトコルの設定

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol

説明

デフォルト値

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

TCPまたはUDPリスナーのプロキシプロトコルを有効にするかどうかを指定します。 プロキシプロトコルを設定すると、クライアントIPアドレスをバックエンドサーバーに渡すことができます。 有効な値:

  • on: プロキシプロトコルを有効にします。

  • off: プロキシプロトコルを有効にしません。

重要

この機能を有効にすると、サービスが中断する場合があります。 プロキシプロトコルを有効にする前に、アプリケーションを停止して更新する必要があります。 作業は慎重に行ってください。

off

CCM 2.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

バックエンドサーバーグループを管理する一般的な操作

ラベルを指定したワーカーノードをCLBインスタンスのバックエンドサーバーとして追加

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label

説明

デフォルト値

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

CLBインスタンスのバックエンドサーバーとして追加するワーカーノードのラベルを指定します。 複数入力する場合は、コンマ (,) で区切ります。 例:"k1=v1,k2=v2" ノードをバックエンドサーバーとして追加するには、ノードに指定されたすべてのラベルが必要です。

デフォルト値なし

CCM 1.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

ポッドがCLBインスタンスのバックエンドサーバーとして実行されるノードの追加

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler

デフォルトでは、externalTrafficPolicyパラメーターはサービスのクラスターに設定されています。 クラスターモードでは、クラスター内のすべてのノードがCLBインスタンスのバックエンドサーバーとして追加されます。 ローカルモードでは、ポッドがデプロイされているノードのみがCLBインスタンスのバックエンドサーバーとして追加されます。

説明

デフォルト値

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

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

  • wrr: 重みの大きいバックエンドサーバーは、重みの小さいバックエンドサーバーよりも多くのリクエストを受け取ります。

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

    説明

    CCM V1.9.3.164-g2105d2e-aliyun以降の場合、ノードの重みは、externalTrafficPolicyパラメーターがLocalに設定されているServicesの各ノードで実行されるポッドの数に基づいて計算されます。 ノード重みの計算の詳細については、CCMはローカルモードでノードの重みをどのように計算しますか? 「サービスFAQ」トピックのセクション。

  • rr: ラウンドロビンアルゴリズムを使用します。 このようにして、リクエストはバックエンドサーバーに順番に転送されます。

rr

CCM 1.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インスタンスのバックエンドサーバーグループからスケジュール不可能なノードを削除するかどうかを指定します。 有効な値:

  • on: CLBインスタンスのバックエンドサーバーグループからスケジュール不可能なノードを削除します。

  • off: kubectl cordonコマンドとkubectl drainコマンドを実行して、ノードをunschedulable状態に設定します。 このシナリオでは、スケジュール不能ノードはCLBインスタンスのバックエンドサーバーグループから削除されません。

off

CCM 1.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インスタンスのバックエンドサーバーとしてENIが割り当てられているポッドを追加する

注釈: service.beta.kubernetes.io/backend-type

説明

デフォルト値

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

CLBインスタンスのバックエンドサーバーとして追加されるリソースのタイプ。 有効な値:

  • eni: CLBインスタンスのバックエンドサーバーとしてポッドを追加します。 これにより、ネットワーク転送パフォーマンスが向上します。 このアノテーションは、Terwayモードでのみ有効です。

    service.beta.kubernetes.io/backend-typeアノテーションを "eni" から "ecs" に手動で設定し、ECSインスタンスをCLBインスタンスのバックエンドサーバーとして追加することもできます。

  • ecs: ECSインスタンスをCLBインスタンスのバックエンドサーバーとして追加します。

  • フランネルモード: ecs

  • Terwayモード:

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

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

CCM 1.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インスタンスを使用する場合にのみ有効です。 詳細については、「CCMを使用したクラスター間のサービスのデプロイ」をご参照ください。

重み付きラウンドロビンを有効にするサービスの重みの指定

注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight

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