Service の YAML ファイル内でアノテーションを使用して、Network Load Balancer (NLB) の追加の負荷分散機能(たとえば NLB のネットワークタイプの指定、変更保護の有効化、相互認証の構成など)を有効化できます。本トピックでは、これらのアノテーションを使用して NLB を構成する方法について説明します。構成は、次の 3 つのリソースタイプごとに整理されています:NLB インスタンス、リスナー、およびサーバーグループ。
目次
カテゴリ | 機能カテゴリ | 構成リンク |
作成 | ||
インスタンス構成 | ||
作成 | ||
リスナー構成 | ||
セキュリティ構成 | ||
サーバー構成 | ||
注意事項
クラスターがバージョン v1.24 以降であり、Cloud Controller Manager (CCM) アドオンがバージョン v2.5.0 以降であることを確認してください。クラスターをアップグレードするには、「Manually upgrade a cluster」をご参照ください。アドオンをアップグレードするには、「Manage add-ons」をご参照ください。
Service 定義で
spec.loadBalancerClassをalibabacloud.com/nlbに設定します。このパラメーターを指定しない場合、デフォルトで クラシックロードバランサー (CLB) が作成されます。Service 作成後は、
spec.loadBalancerClassフィールドを変更できません。ロードバランサーのタイプを CLB から NLB に、またはその逆に変換することはできません。NLB インスタンスは ACK コンソールで管理できません。
kubectlコマンドを使用してすべての管理操作を実行する必要があります。
NLB 操作
パブリック NLB の作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | サポートされる CCM バージョン |
NLB のゾーン、vSwitch、プライベート IP アドレス、および EIP 情報を指定します。形式は次のとおりです:
| ゾーンおよび vSwitch ID:v2.5.0 以降 プライベート IP アドレスおよび 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 をパブリックとプライベートの間で切り替えることができます。有効な値:
デフォルト: NLB コンソールにログインして、サポートされるリージョンおよびゾーンをご確認ください。少なくとも 2 つのゾーンが必要です。複数のゾーンはカンマで区切ります。例: | 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プライベート IP アドレスの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | サポートされる CCM バージョン |
NLB のゾーン、vSwitch、プライベート IP アドレス、および EIP 情報を指定します。形式は次のとおりです:
|
|
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: LoadBalancerEIP インスタンス ID の指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | サポートされる CCM バージョン |
NLB のゾーン、vSwitch、プライベート IP アドレス、および EIP 情報を指定します。形式は次のとおりです:
| ゾーンおよび vSwitch ID:v2.5.0 以降 プライベート IP アドレスおよび EIP:v2.12.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
# プライベート IP アドレスが不要な場合は、プライベート 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ロードバランサー名の指定
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | サポートされる CCM バージョン |
ロードバランサーインスタンスの名前を指定します。名前は 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リソースグループの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | サポートされる CCM バージョン |
ロードバランサーのリソースグループを指定します。リソースグループ ID は設定後に変更できません。 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
IPv6 バックエンドサーバーをアタッチするには、「IPv6 バックエンドサーバーのアタッチ」をご参照ください。
説明 | サポートされる CCM バージョン |
クラスターの kube-proxy モードは IPVS である必要があります。 NLB の IP プロトコルバージョンを指定します。IP プロトコルバージョンは作成後に変更できません。有効な値:
デフォルト: | 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追加タグの追加
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
説明 | サポートされる CCM バージョン |
追加のタグを追加できます。複数のタグはカンマ (,) で区切ります。例: 重要 このアノテーションを追加すると、コンソールでロードバランサーインスタンスに対して手動で行ったタグの変更は上書きされます。 | 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 | Service 構成に基づいて NLB リスナー構成を同期するかどうかを指定します。有効な値:
デフォルト: |
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ゾーン間転送の構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled
説明 | サポートされる CCM バージョン |
ゾーン間転送を有効にするかどうかを指定します。有効な値:
デフォルト: | 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送信元 IP アドレス許可リストの構成
フィールド: .spec.loadBalancerRanges
説明 | サポートされる CCM バージョン |
この機能は、CCM によって作成および管理される NLB インスタンスにのみ適用されます。再利用されたインスタンスではサポートされていません。 このフィールドを構成すると、CCM は自動的にセキュリティグループを作成し、必要なアクセスルールを設定して、NLB インスタンスに関連付けます。このフィールドを構成しないか、空のままにした場合、セキュリティグループは関連付けられません。 デフォルト:空 重要
| v2.14.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:
# 許可された送信元 IP アドレス CIDR ブロックを指定します。
loadBalancerSourceRanges:
- 10.0.0.0/8
- 172.16.0.0/16
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: LoadBalancerIPv6 ネットワークタイプの指定
アノテーション: 次の表に示す複数のアノテーションを使用します。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version | クラスターの kube-proxy モードは IPVS である必要があります。このアノテーションは NLB の IP プロトコルバージョンを指定します。IP プロトコルバージョンは作成後に変更できません。有効な値:
デフォルト: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type | NLB の IPv6 アドレスのネットワークタイプを指定します。有効な値:
デフォルト: 説明 パブリック 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.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids
説明 | サポートされる CCM バージョン |
リスナーに関連付けるセキュリティグループの ID を指定します。複数の ID はカンマ (,) で区切ります。例: | 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" # 複数のセキュリティグループ 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: LoadBalancerTCP および 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: LoadBalancerTCP リスナーの作成
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: LoadBalancerUDP リスナーの作成
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: LoadBalancerTCPSSL リスナーの作成
アノテーション: 必要なアノテーションは次の表を参照してください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルを指定します。複数のプロトコルを指定するには、カンマ (,) で区切ります。例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | ID を取得するには、Certificate Management 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"
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 インスタンスはこのポート範囲からのトラフィックをバックエンドサーバーの同じポート範囲に転送します。たとえば、80~100 のポート範囲を構成した場合、NLB インスタンスのポート 80~100 へのトラフィックは、バックエンドサーバーのポート 80~100 に転送されます。 形式は
| 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
# このポート構成は 80-100 の範囲にマッピングされます。
port: 80
protocol: TCP
# targetPort はバックエンドサーバーのヘルスチェックポートを指定し、整数である必要があります。
targetPort: 80
- name: https
# このポート構成は 400-500 の範囲にマッピングされます。
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 | リスナーのプロトコルを指定します。複数のプロトコルを指定するには、カンマ (,) で区切ります。例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | ID を取得するには、Certificate Management Service コンソールにログインし、証明書を作成して、SSL 証明書管理ページで ID を確認します。 次の図はその例です:
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id | ID を取得するには、Certificate Management Service コンソールにログインし、PCA 証明書管理ページの証明書詳細で ID を確認します。
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert | 相互認証を有効にするかどうかを指定します。有効な値:
デフォルト値: |
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: LoadBalancerTLS セキュリティポリシーの設定
アノテーション: 必要なアノテーションは次の表を参照してください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルを指定します。複数のプロトコルを指定するには、カンマ (,) で区切ります。例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | ID を取得するには、Certificate Management Service コンソールにログインし、証明書を作成して、SSL 証明書管理ページで ID を確認します。 次の図はその例です:
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | TLS セキュリティポリシーの ID です。システム定義またはカスタムセキュリティポリシーを使用できます。有効な値:
デフォルト値: |
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: LoadBalancerProxy Protocol の有効化
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | サポートされる CCM バージョン |
Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効な値:
デフォルト値: 重要 Proxy Protocol を有効にする前に、バックエンドサービスが Proxy Protocol 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: LoadBalancerProxy Protocol による追加情報の送信
アノテーション: 必要なアノテーションは次の表を参照してください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol | Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効な値:
デフォルト値: 重要 Proxy Protocol を有効にする前に、バックエンドサービスが Proxy Protocol v2 をサポートしていることを確認してください。サポートしていない場合、接続は失敗します。このパラメーターは慎重に構成してください。 | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled | Proxy Protocol を使用して VpcId をバックエンドサーバーに渡すかどうかを指定します。有効な値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled | Proxy Protocol を使用して PrivateLinkEpId をバックエンドサーバーに渡すかどうかを指定します。有効な値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled | Proxy Protocol を使用して PrivateLinkEpsId をバックエンドサーバーに渡すかどうかを指定します。有効な値:
デフォルト値: | 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リスナー接続レート制限の設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps
説明 | サポートされる CCM バージョン |
Network Load Balancer (NLB) インスタンスの秒間新規接続数の最大値です。値は 0~1,000,000 の整数である必要があります。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: LoadBalancerALPN ポリシーの設定
アノテーション: 必要なアノテーションは次の表を参照してください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルを指定します。複数のプロトコルを指定するには、カンマ (,) で区切ります。例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | ID を取得するには、Certificate Management Service コンソールにログインし、証明書を作成して、SSL 証明書管理ページで ID を確認します。 次の図はその例です:
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn | アプリケーション層プロトコルネゴシエーション (ALPN) を有効にするかどうかを指定します。有効な値:
デフォルト値: | v2.10.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy | ALPN ポリシーです。有効な値:
詳細については、CreateListener API リファレンスの |
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 | リスナーのプロトコルを指定します。複数のプロトコルを指定するには、カンマ (,) で区切ります。例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | ID を取得するには、Certificate Management Service コンソールにログインし、証明書を作成して、SSL 証明書管理ページで ID を確認します。 次の図はその例です:
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids | 追加証明書の ID です。複数の証明書 ID はカンマ (,) で区切ります。ID を取得するには、Certificate Management Service コンソールにログインし、証明書を作成して、SSL 証明書管理ページで ID を確認します。 次の図はその例です:
| 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-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}" # 複数の追加証明書 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-scheduler
説明 | サポートされる CCM バージョン |
スケジューリングアルゴリズムです。有効な値:
デフォルト値: このアノテーションの値の詳細については、CreateServerGroup API リファレンスの | 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 | 接続ドレインを有効にするかどうかを指定します。有効にした場合、バックエンドサーバーが削除されたとき、またはヘルスチェックに失敗したときに次の動作が発生します:
デフォルト値: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout | 接続ドレインのタイムアウト期間です。
|
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 保持を有効にするかどうかを指定します。有効な値:
デフォルト値: | 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: LoadBalancerTCP ヘルスチェック
アノテーション: 次の表に示す複数のアノテーションが利用可能です。TCP ヘルスチェックを構成するには、以下のすべてのアノテーションが必要です。デフォルトでは、TCP ポートに対してヘルスチェックが有効になっています。
アノテーション | 説明 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | ヘルスチェックを有効にするかどうかを指定します。有効な値:
デフォルト値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックプロトコルです。有効な値:
デフォルト値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | ヘルスチェックに使用するバックエンドサーバーのポートです。有効な値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェック応答を待つ最大時間です。単位:秒。有効な値: デフォルト値:5 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーが正常と見なされるために必要な、連続する成功したヘルスチェックの回数です。有効な値: デフォルト値:2 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーが異常と見なされるために必要な、連続する失敗したヘルスチェックの回数です。有効な値: デフォルト値:2 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | 連続するヘルスチェック間の間隔です。単位:秒。有効な値: デフォルト値:5 |
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: LoadBalancerUDP ヘルスチェック
アノテーション: 複数のアノテーションが利用可能で、すべてが必須です。UDP ヘルスチェックを使用するには、Service で定義されたすべてのポートが UDP プロトコルを使用していることを確認してください。
アノテーション | 説明 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | ヘルスチェックを有効にするかどうかを指定します。有効な値:
デフォルト値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックプロトコルです。有効な値:
デフォルト値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | ヘルスチェックに使用するサーバーポートです。有効な値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | 単一のヘルスチェックの応答タイムアウトです。タイムアウトが発生した場合、現在のチェックは失敗と見なされます。単位:秒。値の範囲: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーが正常と見なされるには、指定された回数の連続するヘルスチェックに合格する必要があります。有効な値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | デフォルト値:2 この回数の連続するヘルスチェック失敗後に、バックエンドサーバーは異常と見なされます。有効な値: |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | 連続するヘルスチェック間の間隔です。単位:秒。値の範囲: この値は |
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: "udp"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "3"
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: udp
port: 80
protocol: UDP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerHTTP ヘルスチェック
アノテーション: 次の表に示す複数のアノテーションが利用可能です。HTTP ヘルスチェックを構成するには、以下のすべてのアノテーションが必要です。デフォルトでは、ヘルスチェックは TCP プロトコルを使用します。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | ヘルスチェックを有効にするかどうかを指定します。有効な値:
デフォルト値: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックプロトコルです。有効な値:
デフォルト値: | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | ヘルスチェックのパスです。長さは 1~80 文字で、スラッシュ ( 説明 このパラメーターは、 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | ヘルスチェックに使用するドメイン名です。有効な値:
説明 このパラメーターは、 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | ヘルスチェックに使用するバックエンドサーバーのポートです。有効な値: | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェック応答を待つ最大時間です。単位:秒。有効な値: デフォルト値:5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーが正常と見なされるために必要な、連続する成功したヘルスチェックの回数です。有効な値: デフォルト値:2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーが異常と見なされるために必要な、連続する失敗したヘルスチェックの回数です。有効な値: デフォルト値:2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | 連続するヘルスチェック間の間隔です。単位:秒。有効な値: デフォルト値:5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method | ヘルスチェックメソッドです。有効な値:
説明 このパラメーターは、 |
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 バージョン |
サーバーグループのタイプです。有効な値:
デフォルト値: 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: LoadBalancerIPv6 バックエンドサーバー
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-ip-version
説明 | サポートされる CCM バージョン |
サーバーグループ内のバックエンドサーバーの IP バージョンです。
デフォルト値:ipv4 説明 サーバーグループに IPv4 および IPv6 の両方のバックエンドサーバーを追加すると、Pod クォータの使用量が 2 倍になります。 |
|
サーバーグループの再利用
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
このアノテーションを使用すると、既存のサーバーグループを再利用できます。これは、既存の NLB インスタンスを再利用する場合にのみ有効です。例については、「ロードバランサーを再利用して複数のクラスターにサービスをデプロイする」をご参照ください。
サービスのトラフィック重み
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
複数の Service が同じ NLB インスタンスを再利用するシナリオでは、このアノテーションを使用して現在の Service のトラフィック重みを設定できます。このアノテーションは、既存のサーバーグループを再利用する場合にのみ有効です。例については、「ロードバランサーを再利用して複数のクラスターにサービスをデプロイする」をご参照ください。
重み更新の無視
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
説明 | サポートされる CCM バージョン |
デフォルト値: | 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デフォルトのバックエンドサーバー重み
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight
説明 | サポートされる CCM バージョン |
サーバーグループ内のバックエンドサーバーのデフォルトの重みです。重みが大きいほど、サーバーが受信するトラフィックの割合が大きくなります。 量が増加します。 有効な値: この構成は、バックエンドインスタンスが ECS インスタンスで、Service の | v2.14.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
# サーバーグループ内のサーバーのデフォルト重みを 35 に設定します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
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
