Network Load Balancer (NLB) は、高性能と自動スケーリングを提供する Alibaba Cloud のレイヤー 4 ロードバランシングサービスです。YAML ファイルでアノテーションを使用して、幅広いロードバランシング機能を設定できます。このトピックでは、アノテーションを使用して NLB インスタンス、リスナー、およびサーバーグループを設定する方法について説明します。
注意事項
ACK クラスターの cloud controller manager (CCM) コンポーネントのバージョンは 2.5.0 以降である必要があります。コンポーネントをアップグレードする方法の詳細については、「コンポーネントの管理」をご参照ください。
サービスで、
spec.loadBalancerClassをalibabacloud.com/nlbに設定します。このフィールドを指定しない場合、デフォルトで Classic Load Balancer (CLB) インスタンスが作成されます。サービスが作成された後、
spec.loadBalancerClassの値を変更することはできません。CLB インスタンスを NLB インスタンスに、またはその逆に変換することはできません。
一般的な NLB 操作
パブリック向け NLB インスタンスの作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | デフォルト値 | サポートされている CCM バージョン |
NLB インスタンスのゾーンを指定します。 NLB がサポートするリージョンとゾーンを表示するには、NLB コンソールにログインします。少なくとも 2 つの異なるゾーンを指定する必要があります。複数のゾーンはコンマ (,) で区切ります。例: 説明 NLB はマルチゾーンデプロイメントをサポートしています。高可用性を確保するために、現在のリージョンに 2 つ以上のゾーンがある場合は、少なくとも 2 つの異なるゾーンの vSwitch を選択してください。 | なし | 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-***** および cn-hangzhou-j:vsw-***** です。高可用性を確保するには、少なくとも 2 つの異なるゾーンで vSwitch を選択します。
name: nginx
namespace: default
spec:
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 インスタンスを切り替えることができます。有効値:
NLB がサポートするリージョンとゾーンを表示するには、NLB コンソールにログインします。少なくとも 2 つの異なるゾーンを指定する必要があります。複数のゾーンはコンマ (,) で区切ります。例: 説明 NLB はマルチゾーンデプロイメントをサポートしています。高可用性を確保するために、現在のリージョンに 2 つ以上のゾーンがある場合は、少なくとも 2 つの異なるゾーンの vSwitch を選択してください。 | internet | 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 です。高可用性を確保するには、少なくとも 2 つの異なるゾーンで vSwitch を選択します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
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: LoadBalancerNLB インスタンスの名前の指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | デフォルト値 | サポートされている CCM バージョン |
NLB インスタンスの名前を指定します。名前は 2~128 文字で、先頭は英字または漢字にする必要があります。数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を使用できます。 | なし | 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:
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: LoadBalancerNLB インスタンスのリソースグループの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | デフォルト値 | サポートされている CCM バージョン |
NLB インスタンスが属するリソースグループを指定します。リソースグループ ID を指定した後は、変更できません。 Alibaba Cloud Resource Management プラットフォームにログインして、リソースグループ ID を照会できます。 | なし | 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:
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 バージョンを変更することはできません。有効値:
| ipv4 | 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:
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: LoadBalancerNLB インスタンスへの追加タグの付加
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
説明 | デフォルト値 | サポートされている 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:
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 リスナー設定を同期するかどうかを指定します。有効値:
| false | 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:
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 を照会できます。 | なし | 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:
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 | NLB インスタンスの IP バージョンを指定します。インスタンスが作成された後、IP バージョンを変更することはできません。このアノテーションを使用する場合、クラスターの kube-proxy モードは IPVS である必要があります。有効値:
| ipv4 | 2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type | NLB インスタンスの IPv6 ネットワークタイプを指定します。有効値:
説明 パブリック IPv6 アドレスを有効にする場合、NLB インスタンスが存在する VPC で IPv6 ゲートウェイが利用可能である必要があります。詳細については、「IPv6 ゲートウェイの作成と管理」をご参照ください。 | intranet | 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:
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-preserve-lb-on-delete
説明 | サポートされている CCM バージョン |
LoadBalancer サービスを削除するときに、サービスによって作成された NLB インスタンスを保持します。NLB インスタンスとサーバーグループ上の この機能が有効になっている場合、サービス同期中に 有効値:
重要 この操作は、サービスタイプを変更するのではなく、サービスを削除して実行してください。そうしないと、サービスが以前に保持されていた NLB インスタンスに誤って再関連付けされる可能性があります。 | 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 はコンマ (,) で区切ります。例: | なし | 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" # 複数のセキュリティグループをコンマで区切ります。
name: nginx
namespace: default
spec:
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 クラスターのアップグレード」をご参照ください。 | なし | 該当なし |
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:
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:
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 リスナーを作成する
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:
ports:
- name: udp
port: 80
protocol: UDP
targetPort: 80
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerTCP-over-SSL リスナーの作成
アノテーション: 複数、次の表に示すとおり。
アノテーション | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルを設定します。複数の値はコンマ (,) で区切ります。例: | なし | 2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書の ID。Certificate Management Service コンソールにログインして、証明書を作成および表示できます。 | なし |
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"
# クラスターが中国本土のリージョンにある場合、結合された証明書 ID は ${your-cert-id}-cn-hangzhou です。
# クラスターが中国本土以外のリージョンにある場合、結合された証明書 ID は ${your-cert-id}-ap-southeast-1 です。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The combined certificate ID}"
name: nginx
namespace: default
spec:
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-protocol-port | リスナーのプロトコルを設定します。複数の値はコンマ (,) で区切ります。例: | なし | 2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書の ID。Certificate Management Service コンソールにログインして証明書を表示できます。 | なし | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id | CA 証明書の ID。Certificate Management Service コンソールにログインして証明書を表示できます。 | なし | |
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"
# クラスターが中国本土のリージョンにある場合、結合された証明書 ID は ${your-cert-id}-cn-hangzhou です。
# クラスターが中国本土以外のリージョンにある場合、結合された証明書 ID は ${your-cert-id}-ap-southeast-1 です。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The combined certificate 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:
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: LoadBalancerTLS セキュリティポリシーの設定
アノテーション: 複数、次の表に示すとおり。
アノテーション | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルを設定します。複数の値はコンマ (,) で区切ります。例: | なし | 2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書の ID。Certificate Management Service コンソールにログインして証明書を表示できます。 | なし | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | セキュリティポリシーの ID。システムのセキュリティポリシーとカスタムセキュリティポリシーがサポートされています。有効値:
| 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"
# クラスターが中国本土のリージョンにある場合、結合された証明書 ID は ${your-cert-id}-cn-hangzhou です。
# クラスターが中国本土以外のリージョンにある場合、結合された証明書 ID は ${your-cert-id}-ap-southeast-1 です。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The combined certificate ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_0"
name: nginx
namespace: default
spec:
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 の設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | デフォルト値 | サポートされている CCM バージョン |
Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効値:
重要 Proxy Protocol を有効にする前に、バックエンドサービスで Proxy Protocol v2 が有効になっていることを確認してください。そうしないと、アクセスが失敗する可能性があります。このパラメーターは慎重に設定してください。 | off | 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:
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 が有効になっていることを確認してください。そうしないと、アクセスが失敗する可能性があります。このパラメーターは慎重に設定してください。 | off | 2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled | Proxy Protocol を介して VpcId をバックエンドサーバーに伝送するかどうかを指定します。有効値:
| off | 2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled | Proxy Protocol を介して PrivateLinkEpId をバックエンドサーバーに伝送するかどうかを指定します。有効値:
| off | 2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled | Proxy Protocol を介して PrivateLinkEpsId をバックエンドサーバーに伝送するかどうかを指定します。有効値:
| off | 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:
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 バージョン |
NLB インスタンスで 1 秒あたりに作成できる新規接続の最大数。有効値: 0~1000000。値 0 は、新規接続数が無制限であることを示します。 | なし | 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:
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 | 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:
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-listener-port-range
説明 | サポートされている CCM バージョン |
NLB インスタンス上の全ポート転送用のリスナーポート範囲を設定することで、指定したポート範囲でリッスンし、トラフィックをバックエンドサーバーの対応するポートに転送できます。 フォーマットは
| 2.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一般的なサーバーグループ操作
スケジューリングアルゴリズムの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
説明 | デフォルト値 | サポートされている CCM バージョン |
スケジューリングアルゴリズム。有効値:
このオプションの有効値の詳細については、「CreateServerGroup」の | wrr | 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:
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 | 接続ドレインを有効にするかどうかを指定します。有効値:
| off | 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:
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 | 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:
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 ポートに対して有効になっています。
アノテーション | 説明 | デフォルト値 | サポートされている CCM バージョン |
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-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 | 2 回の連続したヘルスチェックの間隔。単位: 秒。有効値: 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:
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: LoadBalancerHTTP ヘルスチェックを構成する
アノテーション: 複数、次の表に示すとおり。これらのアノテーションは HTTP ヘルスチェックを設定します。以下のすべてのアノテーションが必要です。ヘルスチェックはデフォルトで TCP ポートに対して有効になっています。
アノテーション | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | ヘルスチェックを有効にするかどうかを指定します。有効な値:
| on | 2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックプロトコル。有効値:
| http | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | ヘルスチェックのパス。パスは 1~80 文字で、英字、数字、特殊文字を含めることができます。スラッシュ (/) で始まる必要があります。詳細については、「CreateServerGroup」をご参照ください。 説明 このパラメーターは、 | なし | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | ヘルスチェックのドメイン名。有効値:
説明 このパラメーターは、 | なし | |
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 | 2 回の連続したヘルスチェックの間隔。単位: 秒。有効値: 1~50。 | 10 | |
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:
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 サーバーグループの分類と説明の詳細については、「NLB サーバーグループ」をご参照ください。 | Instance | 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:
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 インスタンスを再利用する場合にのみ有効です。使用例については、「既存の SLB インスタンスを再利用してクラスター間でサービスをデプロイする」をご参照ください。
トラフィックを受信するサービスの重みの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
複数のサービスが同じ NLB インスタンスを再利用する場合、このアノテーションを使用して現在のサービスのトラフィックの重みを設定できます。このアノテーションは、既存のサーバーグループを再利用する場合にのみ有効です。使用例については、「既存の SLB インスタンスを再利用してクラスター間でサービスをデプロイする」をご参照ください。
バックエンドサーバーの重み更新の無視
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
説明 | サポートされている 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 です。
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