ServiceのYAMLファイルにアノテーションを追加して、さまざまな負荷分散機能を使用するようにNetwork Load Balancer (NLB) インスタンスを構成できます。 NLBインスタンスは、Alibaba Cloudがすべてのインターネット (IoE) 用に開発した次世代のレイヤー4ロードバランサーです。 NLBインスタンスは、超高性能とオートスケーリングを提供します。 このトピックでは、アノテーションを使用してNLBインスタンス、リスナー、およびバックエンドサーバーグループを設定する方法について説明します。
目次
カテゴリ | ハイパーリンク |
使用上の注意
クラスターのKubernetesバージョンは1.24以降である必要があり、クラウドコントローラマネージャー (CCM) はV2.5.0以降である必要があります。 クラスターの更新方法の詳細については、「ACKクラスターの手動更新」をご参照ください。 コンポーネントの更新方法の詳細については、「コンポーネントの管理」をご参照ください。
サービスのNLBインスタンスを設定するには、サービスの
spec.loadBalancerClass
パラメーターをalibabacloud.com/nlb
に設定する必要があります。 それ以外の場合、デフォルトでClassic Load Balancer (CLB) インスタンスが作成されます。サービスの作成後、CLBとNLBの間でロードバランサーインスタンスのタイプを変更するために、サービスの
spec.loadBalancerClass
パラメーターを変更することはできません。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つのゾーンを選択する必要があります。 複数のゾーンはコンマ (,) で区切ります。 例: | ワークロードへの影響なし | 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}" # Example: 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コンソールにログインして、NLBをサポートするリージョンとゾーンを表示できます。 NLBインスタンスごとに少なくとも2つのゾーンを選択する必要があります。 複数のゾーンはコンマ (,) で区切ります。 例: | internet | 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}" # Example: 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}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # The name of the NLB instance.
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。 リソースグループの指定後は変更できません。 リソース管理コンソールにログインして、リソースグループ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}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "${your-resource-group-id}" # The ID of the resource group.
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 | 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}" # Example: 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バージョン |
追加する追加のタグ。 複数入力する場合は、コンマ (,) で区切ります。 例: 重要 このアノテーションをサービスに追加して追加のタグを指定すると、コンソールでSLBインスタンスタグに対して実行される操作が上書きされる場合があります。 | ワークロードへの影響なし | 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}" # Example: 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インスタンスの既存のリスナーを上書きするかどうかを指定します。 有効な値:
| false | CCM 2.5.0以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # The ID of the existing NLB instance that you want to use.
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
EIP帯域幅プランをNLBインスタンスに関連付ける
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id
説明 | デフォルト値 | サポートされているCCMバージョン |
NLBインスタンスを関連付けるElastic IP Address (EIP) 帯域幅プランのID。 Virtual Private Cloud (VPC) コンソールにログインして、EIP帯域幅プランの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}" # Example: 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-modification-protection
説明 | デフォルト値 | サポートされているCCMバージョン |
NLBインスタンスの削除保護を有効にするかどうかを指定します。 有効な値:
重要 LoadBalancerサービス用に作成されたNLBインスタンスの削除保護をNLBコンソールで手動で有効にした場合、 | on | 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}" # Example: 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 | 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}" # Example: 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 | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ipv6-address-type | IPv6 NLBインスタンスのネットワークタイプを指定します。 有効な値:
説明 パブリック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}" # Example: 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 # Specify a public IPv6 address.
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
サービスを削除すると自動的に作成されたSLBインスタンスを保持する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete
説明 | デフォルト値 | サポートされているCCMバージョン |
LoadBalancerサービスを削除すると、そのサービスを使用して作成されたNLBインスタンスは保持され、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}" # Example: 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 が複数ある場合は、コンマ (,) で区切ります。 例: | ワークロードへの影響なし | 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}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # Separate multiple security group IDs with commas (,).
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}" # Example: 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}" # Example: 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}" # Example: 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 | リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: | ワークロードへの影響なし | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。 | ワークロードへの影響なし |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# If the certificate is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou.
# If the certificate is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate 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
相互認証の有効化
以下の注釈が使用される。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: | ワークロードへの影響なし | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。 | ワークロードへの影響なし | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id | 認証局 (CA) 証明書ID。 CA証明書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}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# If the cluster is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou.
# If the cluster is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id: "${your-cacert-id}" # The CA certificate 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: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
TLSセキュリティポリシーの設定
以下の注釈が使用される。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: | ワークロードへの影響なし | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。 | ワークロードへの影響なし | |
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}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# If the cluster is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou.
# If the cluster is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate 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: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
プロキシプロトコルの設定
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | デフォルト値 | サポートされているCCMバージョン |
プロキシプロトコルを有効にしてクライアントIPアドレスをバックエンドサーバーに渡すかどうかを指定します。 有効な値:
重要 プロキシプロトコルを有効にする前に、バックエンドサービスに対してプロキシプロトコルV2が有効になっているかどうかを確認してください。 プロキシプロトコルV2が無効になっている場合、クライアントIPアドレスをバックエンドサーバーに渡すことはできません。 慎重に設定します。 | off | 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}" # Example: 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アドレスをバックエンドサーバーに渡すかどうかを指定します。 有効な値:
重要 プロキシプロトコルを有効にする前に、バックエンドサービスに対してプロキシプロトコルV2が有効になっているかどうかを確認してください。 プロキシプロトコルV2が無効になっている場合、クライアントIPアドレスをバックエンドサーバーに渡すことはできません。 慎重に設定します。 | off | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled | VpcIdパラメーターをバックエンドサーバーに渡すためにプロキシプロトコルを使用するかどうかを指定します。 有効な値:
| off | CCM 2.9.1以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled | PrivateLinkEpIdパラメーターをバックエンドサーバーに渡すためにプロキシプロトコルを使用するかどうかを示します。 有効な値:
| off | CCM 2.9.1以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled | 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}" # Example: 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}" # Example: 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}" # Example: 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 | リスナーのプロトコルタイプ。 複数のリスナータイプはコンマ (,) で区切ります。 例: | ワークロードへの影響なし | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書ID。 証明書管理サービスコンソールにログインして、SSL証明書IDを表示できます。 | ワークロードへの影響なし | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn | アプリケーション層プロトコルネゴシエーション (ALPN) を有効にするかどうかを指定します。 有効な値:
| off | CCM 2.10.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn-policy | ALPNポリシー。 有効な値:
このアノテーションの可能な値の詳細については、CreateListenerの | ワークロードへの影響なし |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # Example: cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
# If the cluster is deployed in a region in the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-cn-hangzhou.
# If the cluster is deployed in a region outside the Chinese mainland, the SSL certificate ID appended with region information is ${your-cert-id}-ap-southeast-1.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${The appended certificate 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: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer
バックエンドサーバーグループを管理する一般的な操作
スケジューリングアルゴリズムの設定
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
説明 | デフォルト値 | サポートされているCCMバージョン |
ルーティングアルゴリズム。 有効な値:
このアノテーションの使用可能な値の詳細については、CreateServerGroupの | wrr | 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}" # Example: 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 | アノテーションは、接続ドレインを有効にするかどうかを指定します。 有効な値:
| 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}" # Example: 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保存を有効にするかどうかを指定します。 有効な値:
| off | 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}" # Example: 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ポートに対してヘルスチェックが有効になっています。
注釈 | 説明 | デフォルト値 | サポートされている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は、バックエンドサーバーで指定されたヘルスチェックポートが使用されていることを示します。 | 0 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェックのタイムアウト期間。 単位: 秒有効値: 1 ~ 300。 | 5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | 正常でないバックエンドサーバーが正常であると宣言される前に実行する必要があるヘルスチェックの連続成功回数。 設定可能な値は 1 から 100 です。 | 2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | 正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。 | 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}" # Example: 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ヘルスチェックの設定
以下の注釈が使用される。 TCPヘルスチェックを設定するには、次の表のすべてのアノテーションが必要です。 デフォルトでは、TCPポートに対してヘルスチェックが有効になっています。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | ヘルスチェックを有効にするかどうかを指定します。 有効な値:
| on | CCM 2.5.0以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックに使用するプロトコル。 有効な値:
| tcp | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | ヘルスチェックに使用されるパス。 パスの長さは1 ~ 80文字で、英数字、および特殊文字のみを使用できます。 URLはスラッシュ (/) で始まる必要があります。 詳細については、「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は、バックエンドサーバーで指定されたヘルスチェックポートが使用されていることを示します。 | 0 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェックのタイムアウト期間。 単位: 秒有効値: 1 ~ 300。 | 5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | 正常でないバックエンドサーバーが正常であると宣言される前に実行する必要があるヘルスチェックの連続成功回数。 設定可能な値は 1 から 100 です。 | 2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | 正常なバックエンドサーバーが異常であると宣言される前に発生する必要がある、連続して失敗したヘルスチェックの数。 設定可能な値は 1 から 100 です。 | 2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックが実行される間隔。 単位: 秒有効値: 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}" # Example: 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"
# Optional. Specify the health check method.
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サーバーグループの詳細については、「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}" # Example: 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クラスターでサービスを公開する」をご参照ください。