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

Server Load Balancer:アノテーションを用いた Network Load Balancer (NLB) の構成

最終更新日:Mar 01, 2026

Service と Network Load Balancer (NLB) を併用する場合、YAML ファイル内のアノテーションを使用して、より高度なロードバランシング機能を有効化できます。これらの機能には、NLB のネットワークタイプの指定、設定変更保護モードの有効化、および相互認証の構成が含まれます。本トピックでは、Service の YAML ファイルにおけるアノテーションを用いた NLB の構成方法について説明します。NLB、リスナー、およびサーバーグループの各リソースに対応しています。

目次

分類

機能分類

構成リンク

注意事項

NLB の代表的な操作

ロードバランサーの作成

インスタンスの構成

セキュリティ構成

リスナーの代表的な操作

リスナーの作成

リスナーの構成

セキュリティ構成

サーバーグループの代表的な操作

サーバーの構成

注意事項

  • クラスターのバージョンは v1.24 以降、Cloud Controller Manager (CCM) のバージョンは v2.5.0 以降である必要があります。クラスターのアップグレードについては、「クラスターの手動アップグレード」をご参照ください。コンポーネントのアップグレードについては、「コンポーネントの管理」をご参照ください。

  • Service 内で spec.loadBalancerClassalibabacloud.com/nlb に指定してください。この指定がない場合、デフォルトで Classic Load Balancer (CLB) が作成されます。

  • Service の作成後は、spec.loadBalancerClass の変更ができません。CLB および NLB のリソースは相互に変換できません。

  • Container Service コンソールでは NLB の管理はサポートされていません。操作には kubectl コマンドを使用してください。

NLB の代表的な操作

パブリック NLB の作成

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

説明

対応する CCM バージョン

NLB のゾーン、プライベート IP アドレス、および EIP 情報を以下の形式で指定します。

{ゾーン}:{vSwitchID}:{プライベート IP アドレス}:{EIP インスタンス ID}。複数の設定はカンマ (,) で区切ります。

  • ゾーンおよび vSwitchID:必須項目です。最低でも 2 つ以上を指定してください(例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321)。

    NLB コンソール にアクセスし、NLB がサポートするリージョンおよびゾーンをご確認ください。

  • プライベート IP アドレス:任意項目です。

  • EIP インスタンス ID:任意項目です。

ゾーンおよび vSwitchID:v2.5.0 以降

プライベート IP アドレスおよび Elastic IP Address (EIP):v2.12.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

プライベート NLB の作成

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

説明

対応する CCM バージョン

NLB をプライベートネットワークタイプとして指定します。このアノテーションの値を変更することで、NLB をパブリックネットワークとプライベートネットワーク間で切り替えることができます。値:

  • internet:パブリック NLB。

  • intranet:プライベート NLB。

デフォルト値:internet

NLB コンソール にログインし、NLB がサポートするリージョンおよびゾーンをご確認ください。最低でも 2 つのゾーンが必要です。複数のゾーンはカンマで区切り、例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLB のプライベート IP アドレスの指定

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

説明

対応する CCM バージョン

NLB のゾーン、プライベート IP アドレス、および EIP 情報を以下の形式で指定します。

{ゾーン}:{vSwitchID}:{プライベート IP アドレス}:{EIP インスタンス ID}。複数の設定はカンマ (,) で区切ります。

  • ゾーンおよび vSwitchID:必須項目です。最低でも 2 つ以上を指定してください(例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321)。

    NLB コンソール にアクセスし、NLB がサポートするリージョンおよびゾーンをご確認ください。

  • プライベート IP アドレス:任意項目です。

  • EIP インスタンス ID:任意項目です。

  • ゾーンおよび vSwitchID:v2.5.0 以降

  • プライベート IP アドレスおよび Elastic IP Address (EIP):v2.12.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    # 例:cn-hangzhou-k:vsw-i123456:10.1.0.1,cn-hangzhou-j:vsw-j654321:10.2.0.1
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}:${private-ipv4-A},${zone-B}:${vsw-B}:${private-ipv4-B}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLB の EIP インスタンス ID の指定

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

説明

対応する CCM バージョン

NLB のゾーン、プライベート IP アドレス、および EIP 情報を以下の形式で指定します。

{ゾーン}:{vSwitchID}:{プライベート IP アドレス}:{EIP インスタンス ID}。複数の設定はカンマ (,) で区切ります。

  • ゾーンおよび vSwitchID:必須項目です。最低でも 2 つ以上を指定してください(例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321)。

    NLB コンソール にアクセスし、NLB がサポートするリージョンおよびゾーンをご確認ください。

  • プライベート IP アドレス:任意項目です。

  • EIP インスタンス ID:任意項目です。

ゾーンおよび vSwitchID:v2.5.0 以降

プライベート IP アドレスおよび Elastic IP Address (EIP):v2.12.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    # プライベート IP アドレスを指定しない場合は空欄のままにしてください。
    # 例:cn-hangzhou-k:vsw-i123456::eip-12345,cn-hangzhou-j:vsw-j654321::eip-54321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}::${eip-A},${zone-B}:${vsw-B}::${eip-B}"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLB 名の指定

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

説明

対応する CCM バージョン

NLB インスタンス名を指定します。NLB 名は 2~128 文字で、英字または漢字で始める必要があります。数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # NLB 名。
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLB のリソースグループの指定

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

説明

対応する CCM バージョン

ロードバランサーが属するリソースグループを指定します。リソースグループ ID は一度指定すると変更できません。

Alibaba Cloud Resource Management プラットフォーム にログインし、リソースグループ ID を照会してください。

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:  "${your-resource-group-id}" # リソースグループ ID。
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

デュアルスタック NLB の作成

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

説明

対応する CCM バージョン

NLB のプロトコルバージョンを指定します。IP タイプは作成後に変更できません。この機能を使用する場合、クラスターの kube-proxy プロキシモードは IPVS である必要があります。値:

  • ipv4:IPv4 タイプ。

  • DualStack:デュアルスタックタイプ(IPv4 および IPv6 の両方をサポート)。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps で指定した vSwitch の両方が IPv6 を有効化している必要があります。

    • 生成された IPv6 アドレスは、IPv6 対応環境でのみアクセス可能です。

デフォルト値:ipv4

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLB への追加タグの付与

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

説明

対応する CCM バージョン

追加タグを付与します。複数のタグはカンマ (,) で区切ります(例:k1=v1,k2=v2)。v2.10.0 以降では、既存および再利用されるインスタンスのタグを変更できます。

重要

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

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

既存のロードバランサーの再利用

重要

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

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

既存のロードバランサーの ID を追加します。

v2.5.0 以降

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

NLB リスナーの構成を Service に基づいて同期するかどうかを決定します。値:

  • true:CCM が Service の構成に基づき、NLB リスナーを作成・更新・削除します。

  • false:CCM が NLB リスナーを処理しません。

デフォルト値:false

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # NLB ID。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

インターネット共有帯域幅パッケージのバインド

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

説明

対応する CCM バージョン

バインドするインターネット共有帯域幅パッケージの ID。

VPC コンソール にログインし、インターネット共有帯域幅パッケージ ID を照会してください。

v2.9.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

クロス AZ 転送の構成

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled

説明

対応する CCM バージョン

クロス AZ 転送を有効化または無効化します。値:

  • on

  • off

デフォルト値:on

v2.13.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled: "off" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

IPv6 のパブリックまたはプライベートネットワークタイプの指定

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

NLB のプロトコルバージョンを指定します。IP タイプは作成後に変更できません。この機能を使用する場合、クラスターの kube-proxy プロキシモードは IPVS である必要があります。値:

  • ipv4:IPv4 タイプ。

  • DualStack:デュアルスタックタイプ(IPv4 および IPv6 の両方をサポート)。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps で指定した vSwitch の両方が IPv6 を有効化している必要があります。

    • 生成された IPv6 アドレスは、IPv6 対応環境でのみアクセス可能です。

デフォルト値:ipv4

v2.5.0 以降

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

NLB の IPv6 ネットワークタイプを指定します。値:

  • intranet:プライベート IPv6

  • internet:パブリック IPv6

デフォルト値:intranet

説明

パブリック IPv6 を有効化する場合、NLB インスタンスが存在する VPC には IPv6 ゲートウェイが必要です。詳細については、「IPv6 ゲートウェイの作成および管理」をご参照ください。

v2.9.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "DualStack"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type: internet # IPv6 ネットワークタイプをパブリックとして指定します。
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

Service 削除時に自動的に作成されたロードバランサーインスタンスを保持

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

説明

対応する CCM バージョン

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

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

値:

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

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

重要

Service の種別を変更するのではなく、Service 自体を削除してください。そうしないと、Service が誤って以前に保持された NLB と再関連付けられる可能性があります。

v2.10.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナーの代表的な操作

リスナーのセキュリティグループの構成

アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids

説明

対応する CCM バージョン

リスナーのセキュリティグループを構成します。複数の値はカンマ (,) で区切ります(例:sg-aaaaa,sg-bbbbb)。

v2.6.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # 複数のセキュリティグループをカンマで区切ります。
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナーの TCP および UDP プロトコルの設定

説明

対応する CCM バージョン

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

該当なし

apiVersion: v1
kind: Service
metadata:
  annotations:
      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 81
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TCP リスナーの作成

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

UDP リスナーの作成

説明

ヘルスチェックを手動で指定せずに UDP リスナーを作成する場合、デフォルトでサーバーグループに対して TCP ヘルスチェックが有効化されます。UDP リスナーを使用する際は、アノテーションを用いて UDP ヘルスチェックを明示的に指定するか、ヘルスチェックを無効化してください。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: udp
    port: 80
    protocol: UDP
    targetPort: 80
  selector:
    app: nginx
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TCP/SSL リスナーの作成

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

リスナーのプロトコルタイプを構成します。複数の値はカンマで区切り、例:TCP:80,TCPSSL:443

v2.5.0 以降

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

サーバー証明書 ID。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。

以下の図は例を示しています。

image

重要

現在、TCP/SSL リスナーでは、クライアント IP の保持 が有効化されたサーバーグループとの関連付けはサポートされていません。つまり、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:${port}" および service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on" の両方のアノテーションを同時に構成することはできません。NLB 経由でクライアント IP アドレスを取得するには、「NLB 経由でのクライアント送信元 IP アドレスの取得」をご参照ください。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナーポート範囲の構成

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

説明

対応する CCM バージョン

Terway ネットワークプラグインでのみサポートされます。

NLB のフルポートフォワーディングリスナーのアドレス範囲を構成し、指定されたポート範囲をリッスンし、バックエンドサーバーの対応するポートにトラフィックを転送します。

フォーマットは ポート範囲:Service ポート です。複数の値はカンマ (,) で区切ります(例:80-100:80,400-500:443)。同じプロトコル下では、複数のポートおよびポート範囲が重複してはなりません。

targetPort はバックエンドサーバーのヘルスチェックポートであり、整数である必要があります。値の範囲:1~65535。

v2.11.4 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    # ポート範囲 80-100 および 400-500 のリスナーを構成します。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range: "80-100:80,400-500:443"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    # targetPort はバックエンドサーバーのヘルスチェックポートであり、整数である必要があります。
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

相互認証の有効化

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

リスナーのプロトコルタイプを構成します。複数の値はカンマで区切り、例:TCP:80,TCPSSL:443

v2.5.0 以降

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

サーバー証明書 ID。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。

以下の図は例を示しています。

image

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

CA 証明書 ID。 Certificate Management Service コンソール にログインし、PCA 証明書管理 ページの証明書詳細で照会してください。

image

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

相互認証を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"   
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TLS セキュリティポリシーの構成

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

リスナーのプロトコルタイプを構成します。複数の値はカンマで区切り、例:TCP:80,TCPSSL:443

v2.5.0 以降

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

サーバー証明書 ID。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。

以下の図は例を示しています。

image

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

セキュリティポリシー ID。システムセキュリティポリシーおよびカスタムセキュリティポリシーをサポートします。値:

  • 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

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

プロキシプロトコルの構成

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

説明

対応する CCM バージョン

プロキシプロトコルを用いてクライアントの送信元 IP アドレスをサーバーに伝達する機能を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

重要

プロキシプロトコルを有効化する前に、バックエンドサービスがプロキシプロトコル v2 を有効化しているかを確認してください。有効化されていない場合、アクセスが失敗する可能性があります。慎重に設定してください。

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

プロキシプロトコルによる追加情報の伝達

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

プロキシプロトコルを用いてクライアントの送信元 IP アドレスをサーバーに伝達する機能を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

重要

プロキシプロトコルを有効化する前に、バックエンドサービスがプロキシプロトコル v2 を有効化しているかを確認してください。有効化されていない場合、アクセスが失敗する可能性があります。慎重に設定してください。

v2.5.0 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled

プロキシプロトコルを用いて VPC ID をバックエンドサーバーに伝達する機能を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

v2.9.1 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled

プロキシプロトコルを用いて PrivateLinkEpId をバックエンドサーバーに伝達する機能を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

v2.9.1 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled

プロキシプロトコルを用いて PrivateLinkEpsId をバックエンドサーバーに伝達する機能を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

v2.9.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナー新規接続レート制限(CPS)の構成

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

説明

対応する CCM バージョン

Network Load Balancer インスタンスの 1 秒あたりの新規接続レート制限(CPS)。値の範囲:[0, 1000000]。0 の場合、レート制限は適用されません。

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナー接続アイドルタイムアウトの構成

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

説明

対応する CCM バージョン

接続アイドルタイムアウト。単位:秒。値の範囲:[10, 900]。

デフォルト値:900

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

ALPN ポリシーの構成

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

リスナーのプロトコルタイプを構成します。複数の値はカンマで区切り、例:TCP:80,TCPSSL:443

v2.5.0 以降

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

サーバー証明書 ID。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。

以下の図は例を示しています。

image

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

ALPN を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:off

v2.10.0 以降

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy

ALPN ポリシー。値:

  • HTTP1Only:HTTP/1.x プロトコルのみネゴシエートします。優先順位:HTTP/1.1 > HTTP/1.0。

  • HTTP2Only:HTTP/2.0 プロトコルのみネゴシエートします。

  • HTTP2Optional:HTTP/1.x プロトコルを優先しますが、HTTP/2.0 プロトコルも受け入れます。優先順位:HTTP/1.1 > HTTP/1.0 > HTTP/2.0。

  • HTTP2Preferred:HTTP/2 プロトコルを優先しますが、HTTP/1.x プロトコルも受け入れます。優先順位:HTTP/2.0 > HTTP/1.1 > HTTP/1.0。

このオプションの他の値については、CreateListener API の AlpnPolicy フィールドをご参照ください。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn: "on"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy: "HTTP1Only" 
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

拡張証明書の構成

アノテーション

説明

対応する CCM バージョン

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

リスナーのプロトコルタイプを構成します。複数の値はカンマ (,) で区切ります(例:TCP:80,TCPSSL:443)。

v2.5.0 以降

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

サーバー証明書 ID。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。

以下の図は例を示しています。

image

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids

拡張証明書 ID。複数の拡張証明書はカンマ (,) で区切ります。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。

以下の図は例を示しています。

image

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids: "${CertIdentifier-1},${CertIdentifier-2}" # 複数の拡張証明書をカンマで区切ります。
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

サーバーグループの代表的な操作

スケジューリングポリシーの構成

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

説明

対応する CCM バージョン

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

  • wrr:重み付きラウンドロビン。重みの高いサーバーが選択される確率が高くなります。

  • rr:ラウンドロビン。外部からのリクエストは、順番にサーバーに分散されます。

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

  • tch:4 タプルハッシュ。4 タプル(ソース IP、宛先 IP、ソースポート、宛先ポート)に基づく一貫性のあるハッシュ。同一のフローは同一のサーバーにスケジュールされます。

  • wlc:重み付き最少接続数。各バックエンドサーバーの重みに基づくラウンドロビンに加え、このアルゴリズムではバックエンドサーバーの実際の負荷(接続数)も考慮します。重みが等しい場合、現在の接続数が少ないバックエンドサーバーが選択される確率が高くなります。

デフォルト値:wrr

このオプションの他の値については、CreateServerGroup API の Scheduler フィールドをご参照ください。

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "sch"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

接続ドレインの構成

アノテーション: 下記の表に示す複数のアノテーション。

アノテーション

説明

対応する CCM バージョン

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

接続ドレインを有効化または無効化します。有効化した場合、バックエンドサーバーが削除されたとき、またはヘルスチェックに失敗したときに以下の処理が実行されます。

  • on:既存の接続は指定された期間、通常通り送信されます。タイムアウト後、接続は積極的に閉じられ、サービスのスムーズなオフライン化が保証されます。

  • off:既存の接続は積極的に閉じられません。クライアントが自発的に切断するか、持続的接続セッションの有効期限が切れるまで接続は維持されます。

デフォルト値:off

v2.5.0 以降

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

接続ドレインのタイムアウトを構成します。

  • 単位:秒。

  • 有効値の範囲は [0, 900] です。0 を指定すると即座に切断されます。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    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:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

クライアント IP の保持

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

説明

対応する CCM バージョン

クライアント IP の保持を有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:on

v2.5.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-client-ip: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

TCP ヘルスチェックの構成

アノテーション: 下記の表に示す複数のアノテーション。TCP ヘルスチェックを構成するには、以下のすべてのアノテーションが必要です。TCP ポートに対しては、ヘルスチェックがデフォルトで有効化されています。

アノテーション

説明

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

ヘルスチェックを有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:on

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

ヘルスチェックプロトコル。値:

  • tcp

  • http

デフォルト値:tcp

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

ヘルスチェック用のサーバーポート。値の範囲:[0, 65535]。デフォルト値:0(サーバーのポートをヘルスチェックポートとして使用)。

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

ヘルスチェック応答の最大タイムアウト。単位:秒。値の範囲:[1, 300]。

デフォルト値:5

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

サーバーのヘルスチェックステータスを「異常」から「正常」に変更するために必要な、連続成功ヘルスチェック回数。値の範囲:[2, 10]。

デフォルト値:2

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

サーバーのヘルスチェックステータスを「正常」から「異常」に変更するために必要な、連続失敗ヘルスチェック回数。値の範囲:[2, 10]。

デフォルト値:2

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

ヘルスチェック間隔。単位:秒。値の範囲:[1, 50]。

デフォルト値:10

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "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: "5"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

HTTP ヘルスチェックの構成

アノテーション: 下記の表に示す複数のアノテーション。HTTP ヘルスチェックを構成するには、以下のすべてのアノテーションが必要です。TCP ポートに対しては、ヘルスチェックがデフォルトで有効化されています。

アノテーション

説明

対応する CCM バージョン

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

ヘルスチェックを有効化または無効化します。値:

  • on:有効化。

  • off:無効化。

デフォルト値:on

v2.5.0 以降

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

ヘルスチェックプロトコル。値:

  • tcp

  • http

デフォルト値:tcp

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

ヘルスチェックパス。長さ:1~80 文字。英字、数字、および記号のみ許可されます。先頭はスラッシュ (/) である必要があります。詳細については、「CreateServerGroup」をご参照ください。

説明

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP の場合にのみ有効です。

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

ヘルスチェックに使用するドメイン名。値:

  • $SERVER_IP:バックエンドサーバーのプライベート IP アドレスを使用します。

  • ドメイン名:特定のドメイン名を指定します。長さ制限:1~80 文字。小文字、数字、ハイフン (-)、ピリオド (.) のみ許可されます。

説明

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP の場合にのみ有効です。

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

ヘルスチェック用のサーバーポート。値の範囲:[0, 65535]。デフォルト値:0(サーバーのポートをヘルスチェックポートとして使用)。

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

ヘルスチェック応答の最大タイムアウト。単位:秒。値の範囲:[1, 300]。

デフォルト値:5

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

サーバーのヘルスチェックステータスを「異常」から「正常」に変更するために必要な、連続成功ヘルスチェック回数。値の範囲:[2, 10]。

デフォルト値:2

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

サーバーのヘルスチェックステータスを「正常」から「異常」に変更するために必要な、連続失敗ヘルスチェック回数。値の範囲:[2, 10]。

デフォルト値:2

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

ヘルスチェック間隔。単位:秒。値の範囲:[1, 50]。

デフォルト値:10

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

ヘルスチェックメソッド。値:

  • GET

  • HEAD

説明

このパラメーターは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-typeHTTP の場合にのみ有効です。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    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-health-check-domain: "www.test.com"
    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-connect-timeout: "10"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
    # ヘルスチェックメソッドを構成します。このアノテーションは任意です。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

サーバーグループタイプの構成

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

説明

対応する CCM バージョン

サーバーグループタイプを構成します。値:

  • Ip:IP アドレスタイプ。IP アドレスタイプのバックエンドサーバーを直接追加できます。

  • Instance(デフォルト値):サーバータイプ。ECS および ENI インスタンスを追加できます。

デフォルト値:Instance

NLB サーバーグループの分類および説明については、「NLB サーバーグループ」をご参照ください。

v2.8.0 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

既存のサーバーグループの再利用

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

既存の vServer グループを再利用します。これは、既存の NLB を再利用する場合にのみ有効です。具体的な例については、「既存のロードバランサーを再利用してクラスター間でサービスを展開」をご参照ください。

サービストラフィックの重み付けの構成

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

複数の Service が同一の NLB を再利用する場合、このアノテーションを使用して、現在の Service のトラフィック重みを構成します。このアノテーションは、既存のサーバーグループを再利用する場合にのみ有効です。具体的な例については、「既存のロードバランサーを再利用してクラスター間でサービスを展開」をご参照ください。

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

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

説明

対応する CCM バージョン

Service の同期中に、サーバーグループ内のバックエンドサーバーの重み付けを更新しないようにスキップします。この構成は、CCM 以外の仕組みでバックエンドサーバーの重み付けを手動で管理する必要があるシナリオに適用されます。値:

  • on

  • off

デフォルト値:off

v2.11.1 以降

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
  name: nginx
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - name: tcp
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer