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

Server Load Balancer:アノテーションを使用した NLB インスタンスの構成

最終更新日:Nov 10, 2025

Service を使用してネットワークロードバランサー (NLB) インスタンスを構成する場合、Service の YAML ファイルにアノテーションを追加して負荷分散を構成できます。たとえば、アノテーションを追加して、NLB インスタンスのネットワークタイプを指定したり、NLB インスタンスの設定変更保護を有効にしたり、NLB インスタンスの相互認証を構成したりできます。このトピックでは、Service アノテーションを使用して NLB インスタンス、リスナー、およびバックエンドサーバーグループを構成する方法について説明します。

目次

カテゴリ

機能

参照

使用上の注意

NLB インスタンスを管理するための一般的な操作

NLB インスタンスの作成

NLB インスタンスの構成

セキュリティ設定の構成

リスナーの構成に使用される一般的なアノテーション

リスナーの作成

リスナーの構成

セキュリティ設定の構成

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

バックエンドサーバーの構成

使用上の注意

  • クラスタの Kubernetes バージョンは 1.24 以降である必要があり、クラウドコントローラーマネージャー (CCM) は V2.5.0 以降である必要があります。クラスタのアップデート方法については、「ACK クラスタを手動でアップグレードする」をご参照ください。コンポーネントのアップデート方法については、「コンポーネントの管理」をご参照ください。

  • Service の NLB インスタンスを構成するには、Service の spec.loadBalancerClass パラメーターを alibabacloud.com/nlb に設定する必要があります。そうでない場合、デフォルトで Classic Load Balancer(CLB) インスタンスが作成されます。

  • Service の作成後に、Service の spec.loadBalancerClass パラメーターを変更して、ロードバランサーインスタンスのタイプを CLB と NLB の間で変更することはできません。

  • Container Service for Kubernetes(ACK)コンソールを使用して NLB インスタンスを管理することはできません。NLB インスタンスを管理するには、kubectl を使用します。

NLB インスタンスを管理するための一般的な操作

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

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

説明

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

NLB インスタンスがデプロイされているゾーン。

NLB コンソールにログインして、NLB をサポートするリージョンとゾーンを表示できます。各 NLB インスタンスに少なくとも 2 つのゾーンを選択する必要があります。複数のゾーンはコンマ (,) で区切ります。例: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321

CCM 2.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。
  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 をサポートするリージョンとゾーンを表示できます。各 NLB インスタンスに少なくとも 2 つのゾーンを選択する必要があります。複数のゾーンはカンマ (,) で区切ります。例: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321

CCM 2.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 インスタンスの名前の指定

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

説明

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

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

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

NLB インスタンスが属するリソースグループの ID です。リソースグループは、指定した後は変更できません。

NLB インスタンスが属するリソースグループの ID。リソースグループは、指定した後は変更できません。 リソース管理コンソールにログインして、リソースグループ ID をクエリできます。

CCM 2.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 バージョン。IP バージョンは、指定した後は変更できません。このアノテーションを使用するには、クラスタの kube-proxy モードが IPVS に設定されていることを確認してください。有効な値:

  • ipv4: IPv4。

  • DualStack: IPv4/IPv6 デュアルスタック。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps 注釈で指定された vSwitch で IPv6 が有効になっている必要があります。

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

デフォルト値: ipv4

CCM 2.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。 CCM 2.10.0 以降のバージョンでは、作成済みおよび再利用されたインスタンスのタグを変更できます。

重要

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

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

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

次のアノテーションが使用されます。

アノテーション

説明

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

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

使用したい既存の NLB インスタンスの ID。

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

このアノテーションは、NLB インスタンスの既存のリスナーを上書きするかどうかを指定します。有効な値:

  • true: CCM は、サービスの構成に基づいて、NLB インスタンスのリスナーを作成、更新、または削除します。

  • false: CCM は、NLB インスタンスのリスナーに変更を加えません。

デフォルト値: false

CCM 2.5.0 以降

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

インターネット共有帯域幅インスタンスと NLB インスタンスの関連付け

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

説明

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

NLB インスタンスに関連付ける EIP 帯域幅プランの ID です。

NLB インスタンスに関連付ける Elastic IP Address (EIP) 帯域幅プランの ID。 Virtual Private Cloud (VPC) コンソールにログインして、インターネット共有帯域幅インスタンスの ID をクエリできます。

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

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

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

説明

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

NLB インスタンスの削除保護を有効にするかどうかを指定します。有効な値:

  • on

  • off

デフォルト値: on

重要

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

CCM 2.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-delete-protection: "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
  sessionAffinity: None
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

NLB インスタンスの設定変更保護モードの有効化

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

説明

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

NLB インスタンスの設定変更保護を有効にするかどうかを指定します。有効な値:

  • ConsoleProtection

  • NonProtection

デフォルト値:ConsoleProtection

CCM 2.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-modification-protection: "ConsoleProtection"
  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 NLB インスタンスのネットワークタイプの指定

次のアノテーションが使用されます。

アノテーション

説明

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

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

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

  • ipv4: IPv4。

  • DualStack: IPv4/IPv6 デュアルスタック。

    • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps アノテーションで指定された vSwitch で IPv6 が有効になっている必要があります。

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

デフォルト値: ipv4

CCM 2.5.0 以降

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

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

  • intranet: 非公開 IPv6 アドレス。

  • internet: パブリック IPv6 アドレス。

デフォルト値: intranet

説明

パブリック IPv6 アドレスを使用するには、NLB インスタンスが存在する VPC に IPv6 ゲートウェイを作成する必要があります。詳細については、「IPv6 ゲートウェイを作成および管理する」をご参照ください。

CCM 2.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 の削除時に自動的に作成された NLB インスタンスを保持する

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

説明

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

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

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

有効な値:

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

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

重要

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

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

リスナーに構成されているセキュリティグループの ID。複数の ID はカンマ (,) で区切ります。例: sg-aaaaa,sg-bbbbb

CCM 2.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" # 複数のセキュリティグループ 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

リスナーに TCP と UDP の両方を構成する

説明

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

Kubernetes バージョン 1.24 以降のクラスタのみがこの機能をサポートしています。ACK クラスタのアップデート方法については、「ACK クラスタを手動でアップグレードする」をご参照ください。

該当なし

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 リスナーの作成

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

CCM 2.5.0 以降

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

サーバー証明書 ID。SSL Certificates Service コンソール にログインして、SSL 証明書 ID を表示できます。

重要

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"
    # 証明書が中国本土のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-cn-hangzhou です。
    # 証明書が中国本土以外のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-ap-southeast-1 です。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-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: 80
  selector:
    app: nginx
  loadBalancerClass: "alibabacloud.com/nlb"
  type: LoadBalancer

リスナー ポート範囲を構成する

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

説明

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

このアノテーションは、Terway ネットワークプラグインを使用する場合にのみサポートされます。

NLB ポートフォワーディングのリスナーポート範囲を構成することにより、指定されたポート範囲を監視し、トラフィックをバックエンドサーバーの対応するポートに転送できます。

フォーマット: ポート範囲:サービスポート。複数の値はカンマ (,) で区切ります。例: 80-100:80,400-500:443。同じプロトコル下の複数のポートとポート範囲は重複できません。targetPort はバックエンドサーバーのヘルスチェックポートであり、int タイプである必要があります。有効値: 1 ~ 65535。

CCM 2.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。
    # ポート範囲 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 はバックエンドサーバーのヘルスチェックポートであり、int タイプである必要があります。
    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

CCM 2.5.0 以降

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

サーバー証明書 ID。SSL Certificates Service コンソール にログインして、SSL 証明書 ID を表示できます。

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

認証局 (CA) 証明書 ID。SSL Certificates Service コンソール にログインして、CA 証明書 ID を表示できます。

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"   
    # クラスタが中国本土のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-cn-hangzhou です。
    # クラスタが中国本土以外のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-ap-southeast-1 です。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${付加された証明書 ID}" 
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}"  # CA 証明書 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

CCM 2.5.0 以降

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

サーバー証明書 ID。SSL Certificates Service コンソール にログインして、SSL 証明書 ID を表示できます。

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"
    # クラスタが中国本土のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-cn-hangzhou です。
    # クラスタが中国本土以外のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-ap-southeast-1 です。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${付加された証明書 ID}" 
    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

Proxy Protocol の構成

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

説明

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

クライアント IP アドレスをバックエンドサーバーに渡すためにプロキシプロトコルを有効にするかどうかを指定します。有効な値:

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

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

デフォルト値: off

重要

プロキシプロトコルを有効にする前に、バックエンドサービスでプロキシプロトコル V2 が有効になっているかどうかを確認してください。プロキシプロトコル V2 が無効になっている場合、クライアント IP アドレスはバックエンドサーバーに渡されません。注意して設定してください。

CCM 2.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 が無効になっている場合、クライアント IP アドレスはバックエンドサーバーに渡されません。注意して構成してください。

CCM 2.5.0 以降

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

プロキシプロトコルを使用して VpcId パラメーターをバックエンドサーバーに渡すかどうかを指定します。有効な値:

  • on:: プロキシプロトコルを使用して VpcId パラメーターをバックエンドサーバーに渡します。

  • off: プロキシプロトコルを使用して VpcId パラメーターをバックエンドサーバーに渡しませ ん。

デフォルト値: off

CCM 2.9.1 以降

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

プロキシプロトコルを使用して PrivateLinkEpId パラメーターをバックエンドサーバーに渡すかどうかを示します。有効な値:

  • on:: プロキシプロトコルを使用して PrivateLinkEpId パラメーターをバックエンドサーバーに渡します。

  • off: プロキシプロトコルを使用して PrivateLinkEpId パラメーターをバックエンドサーバーに渡しませ ん。

デフォルト値: off

CCM 2.9.1 以降

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

プロキシプロトコルを使用して PrivateLinkEpsId パラメーターをバックエンドサーバーに渡すかどうかを指定します。有効な値:

  • on:: プロキシプロトコルを使用して PrivateLinkEpsId パラメーターをバックエンドサーバーに渡します。

  • off: プロキシプロトコルを使用して PrivateLinkEpsId パラメーターをバックエンドサーバーに渡しませ ん。

デフォルト値: off

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

1 秒あたりに作成できる接続の最大数を指定する

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

説明

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

NLB インスタンスで 1 秒あたりに作成できる接続の最大数。有効な値:0 ~ 1000000。値 0 は、1 秒あたりに作成できる接続数が無制限であることを示します。

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

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

CCM 2.5.0 以降

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

サーバー証明書 ID。SSL 証明書サービス コンソール にログインして、SSL 証明書 ID を表示できます。

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

Application-Layer Protocol Negotiation (ALPN) を有効にするかどうかを指定します。有効な値:

  • on:: ALPN を有効にします。

  • off: ALPN を無効にします。

デフォルト値: off

CCM 2.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/1.0 は HTTP/2.0 よりも優先順位が高くなります。

  • HTTP2Preferred: HTTP/2.0 を HTTP/1.x よりも優先します。具体的には、HTTP/2.0 は HTTP/1.1 よりも優先順位が高く、HTTP/1.1 は HTTP/1.0 よりも優先順位が高くなります。

このアノテーションの値の詳細については、「CreateListener」の 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"
    # クラスタが中国本土のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-cn-hangzhou です。
    # クラスタが中国本土以外のリージョンにデプロイされている場合、リージョン情報が付加された SSL 証明書 ID は ${your-cert-id}-ap-southeast-1 です。
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate ID}" # 付加された証明書 ID
    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

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

スケジューリングアルゴリズムを設定する

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

説明

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

ルーティングアルゴリズム。有効な値:

  • wrr: 重み付きラウンドロビン (WRR) アルゴリズムが使用されます。重みの大きいバックエンドサーバーは、重みの小さいバックエンドサーバーよりも多くのリクエストを受け取ります。これはデフォルト値です。

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

  • sch: ソース IP ハッシュアルゴリズム。同じソース IP アドレスからのリクエストは、同じバックエンドサーバーに転送されます。

  • tch: 4 要素ハッシュアルゴリズムが使用されます。整合性ハッシュは、ソース IP アドレス、宛先 IP アドレス、ソースポート、および宛先ポートの 4 つの要素に基づいています。4 つの要素に基づいて同じ情報を含むリクエストは、同じバックエンドサーバーに転送されます。

  • wlc: 重み付き最小接続。リクエストは、各バックエンドサーバーの重みと負荷に基づいて分散されます。負荷とは、バックエンドサーバー上の接続数を指します。複数のバックエンドサーバーが同じ重みを持つ場合、リクエストは接続数が最も少ないバックエンドサーバーに転送されます。

デフォルト値: wrr.

この注釈の値の詳細については、「サーバーグループを作成する」の Scheduler フィールドをご参照ください。

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

CCM 2.5.0 以降

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

接続ドレインのタイムアウト期間を指定します。単位: 秒 有効な値: 10 ~ 900。

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:: クライアント IP の保持を有効にします。

  • off: クライアント IP の保持を無効にします。

デフォルト値: on

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

CCM 2.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 文字で、文字、数字、および特殊文字のみを含めることができます。 URL はスラッシュ (/) で始まる必要があります。詳細については、「CreateServerGroup」をご参照ください。

説明

このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type アノテーションが HTTP に設定されている場合にのみ有効になります。

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

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

  • $SERVER_IP: バックエンドサーバーのプライベート IP アドレス。

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

説明

このアノテーションは、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type アノテーションが HTTP に設定されている場合にのみ有効になります。

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

ヘルスチェックに使用するバックエンドサーバーポート。有効な値: 0 ~ 65535。デフォルト値: 0。値 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-type アノテーションが HTTP に設定されている場合にのみ有効になります。

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 アドレスを指定してバックエンドサーバーを追加できます。

  • Instance: Elastic Compute Service (ECS) インスタンスと Elastic Network Interface (ENI) をバックエンドサーバーとして追加できます。これはデフォルト値です。

デフォルト値: Instance.

NLB サーバーグループの詳細については、「NLB サーバーグループ」をご参照ください。

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

既存の vServer グループを再利用する

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

この注釈を使用して、 vServer グループを再利用できます。この注釈は、既存の NLB インスタンスを使用する場合にのみ有効になります。詳細については、「既存の SLB インスタンスを再利用して異なる ACK クラスタのサービスを公開する」をご参照ください。

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

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

複数のサービスが同じ NLB インスタンスを使用する場合、この注釈を使用して、現在のサービスに配信されるトラフィックの割合を指定できます。この注釈は、既存の vServer グループが再利用される場合にのみ有効になります。詳細については、「既存の SLB インスタンスを再利用して異なる ACK クラスタのサービスを公開する」をご参照ください。

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

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

説明

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

サービスの同期プロセス中に、サーバーグループ内のバックエンドサーバーの重みの更新はスキップされます。 この構成は、CCM 以外のメカニズムでバックエンドサーバーの重みを手動で管理する必要があるシナリオに適しています。 有効な値:

  • on

  • off

デフォルト値: off

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