Service と Network Load Balancer (NLB) を併用する場合、YAML ファイル内のアノテーションを使用して、より高度なロードバランシング機能を有効化できます。これらの機能には、NLB のネットワークタイプの指定、設定変更保護モードの有効化、および相互認証の構成が含まれます。本トピックでは、Service の YAML ファイルにおけるアノテーションを用いた NLB の構成方法について説明します。NLB、リスナー、およびサーバーグループの各リソースに対応しています。
目次
分類 | 機能分類 | 構成リンク |
ロードバランサーの作成 | ||
インスタンスの構成 | ||
セキュリティ構成 | ||
リスナーの作成 | ||
リスナーの構成 | ||
セキュリティ構成 | ||
サーバーの構成 | ||
注意事項
クラスターのバージョンは v1.24 以降、Cloud Controller Manager (CCM) のバージョンは v2.5.0 以降である必要があります。クラスターのアップグレードについては、「クラスターの手動アップグレード」をご参照ください。コンポーネントのアップグレードについては、「コンポーネントの管理」をご参照ください。
Service 内で
spec.loadBalancerClassをalibabacloud.com/nlbに指定してください。この指定がない場合、デフォルトで Classic Load Balancer (CLB) が作成されます。Service の作成後は、
spec.loadBalancerClassの変更ができません。CLB および NLB のリソースは相互に変換できません。Container Service コンソールでは NLB の管理はサポートされていません。操作には
kubectlコマンドを使用してください。
NLB の代表的な操作
パブリック NLB の作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | 対応する CCM バージョン |
NLB のゾーン、プライベート IP アドレス、および EIP 情報を以下の形式で指定します。
| ゾーンおよび vSwitchID:v2.5.0 以降 プライベート IP アドレスおよび Elastic IP Address (EIP):v2.12.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerプライベート NLB の作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
説明 | 対応する CCM バージョン |
NLB をプライベートネットワークタイプとして指定します。このアノテーションの値を変更することで、NLB をパブリックネットワークとプライベートネットワーク間で切り替えることができます。値:
デフォルト値: 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: LoadBalancerNLB のプライベート IP アドレスの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | 対応する CCM バージョン |
NLB のゾーン、プライベート 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: LoadBalancerNLB の EIP インスタンス ID の指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | 対応する CCM バージョン |
NLB のゾーン、プライベート IP アドレス、および EIP 情報を以下の形式で指定します。
| ゾーンおよび vSwitchID:v2.5.0 以降 プライベート IP アドレスおよび Elastic IP Address (EIP):v2.12.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
# プライベート IP アドレスを指定しない場合は空欄のままにしてください。
# 例:cn-hangzhou-k:vsw-i123456::eip-12345,cn-hangzhou-j:vsw-j654321::eip-54321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A}::${eip-A},${zone-B}:${vsw-B}::${eip-B}"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerNLB 名の指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | 対応する CCM バージョン |
NLB インスタンス名を指定します。NLB 名は 2~128 文字で、英字または漢字で始める必要があります。数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # NLB 名。
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerNLB のリソースグループの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | 対応する CCM バージョン |
ロードバランサーが属するリソースグループを指定します。リソースグループ ID は一度指定すると変更できません。 Alibaba Cloud Resource Management プラットフォーム にログインし、リソースグループ ID を照会してください。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "${your-resource-group-id}" # リソースグループ ID。
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerデュアルスタック NLB の作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
説明 | 対応する CCM バージョン |
NLB のプロトコルバージョンを指定します。IP タイプは作成後に変更できません。この機能を使用する場合、クラスターの kube-proxy プロキシモードは IPVS である必要があります。値:
デフォルト値: | 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: LoadBalancerNLB への追加タグの付与
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
説明 | 対応する CCM バージョン |
追加タグを付与します。複数のタグはカンマ (,) で区切ります(例: 重要 このアノテーションを Service に追加して追加タグを指定した場合、コンソール上で対応するロードバランサーインスタンスのタグを追加で変更すると、その変更が上書きされる可能性があります。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer既存のロードバランサーの再利用
既存の LoadBalancer Service に対して、再利用関連のアノテーションを追加または変更しないでください。この操作により、再利用が失敗したり、CCM によって作成された元のロードバランサーが適切に解放されなくなる可能性があります。
アノテーション: 下記の表に示す複数のアノテーション。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | 既存のロードバランサーの ID を追加します。 | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | NLB リスナーの構成を Service に基づいて同期するかどうかを決定します。値:
デフォルト値: |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # NLB ID。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerインターネット共有帯域幅パッケージのバインド
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id
説明 | 対応する CCM バージョン |
バインドするインターネット共有帯域幅パッケージの ID。 VPC コンソール にログインし、インターネット共有帯域幅パッケージ ID を照会してください。 | v2.9.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerクロス AZ 転送の構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cross-zone-enabled
説明 | 対応する CCM バージョン |
クロス AZ 転送を有効化または無効化します。値:
デフォルト値: | 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: LoadBalancerIPv6 のパブリックまたはプライベートネットワークタイプの指定
アノテーション: 下記の表に示す複数のアノテーション。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version | NLB のプロトコルバージョンを指定します。IP タイプは作成後に変更できません。この機能を使用する場合、クラスターの kube-proxy プロキシモードは IPVS である必要があります。値:
デフォルト値: | 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: LoadBalancerService 削除時に自動的に作成されたロードバランサーインスタンスを保持
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete
説明 | 対応する CCM バージョン |
LoadBalancer Service を削除する際に、Service によって作成された NLB インスタンスを保持します。NLB インスタンスおよびサーバーグループから この機能を有効化すると、Service の同期中に 値:
重要 Service の種別を変更するのではなく、Service 自体を削除してください。そうしないと、Service が誤って以前に保持された NLB と再関連付けられる可能性があります。 | v2.10.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerリスナーの代表的な操作
リスナーのセキュリティグループの構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids
説明 | 対応する CCM バージョン |
リスナーのセキュリティグループを構成します。複数の値はカンマ (,) で区切ります(例: | v2.6.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-security-group-ids: "sg-aaaaa,sg-bbbbb" # 複数のセキュリティグループをカンマで区切ります。
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerリスナーの TCP および UDP プロトコルの設定
説明 | 対応する CCM バージョン |
この機能には Kubernetes クラスターのバージョン v1.24 以降が必要です。クラスターのバージョンをアップグレードするには、「ACK クラスターの Kubernetes バージョンのアップグレード」をご参照ください。 | 該当なし |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: udp
port: 80
protocol: UDP
targetPort: 81
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: 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: LoadBalancerTCP/SSL リスナーの作成
アノテーション: 下記の表に示す複数のアノテーション。
アノテーション | 説明 | 対応する 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 証明書管理 ページで作成または照会してください。 以下の図は例を示しています。
|
現在、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 のフルポートフォワーディングリスナーのアドレス範囲を構成し、指定されたポート範囲をリッスンし、バックエンドサーバーの対応するポートにトラフィックを転送します。 フォーマットは
| v2.11.4 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
# ポート範囲 80-100 および 400-500 のリスナーを構成します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-listener-port-range: "80-100:80,400-500:443"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
# targetPort はバックエンドサーバーのヘルスチェックポートであり、整数である必要があります。
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer相互認証の有効化
アノテーション: 下記の表に示す複数のアノテーション。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルタイプを構成します。複数の値はカンマで区切り、例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書 ID。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。 以下の図は例を示しています。
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id | CA 証明書 ID。 Certificate Management Service コンソール にログインし、PCA 証明書管理 ページの証明書詳細で照会してください。
| |
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 証明書管理 ページで作成または照会してください。 以下の図は例を示しています。
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | セキュリティポリシー 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: LoadBalancerプロキシプロトコルの構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | 対応する CCM バージョン |
プロキシプロトコルを用いてクライアントの送信元 IP アドレスをサーバーに伝達する機能を有効化または無効化します。値:
デフォルト値: 重要 プロキシプロトコルを有効化する前に、バックエンドサービスがプロキシプロトコル v2 を有効化しているかを確認してください。有効化されていない場合、アクセスが失敗する可能性があります。慎重に設定してください。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerプロキシプロトコルによる追加情報の伝達
アノテーション: 下記の表に示す複数のアノテーション。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol | プロキシプロトコルを用いてクライアントの送信元 IP アドレスをサーバーに伝達する機能を有効化または無効化します。値:
デフォルト値: 重要 プロキシプロトコルを有効化する前に、バックエンドサービスがプロキシプロトコル v2 を有効化しているかを確認してください。有効化されていない場合、アクセスが失敗する可能性があります。慎重に設定してください。 | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled | プロキシプロトコルを用いて VPC ID をバックエンドサーバーに伝達する機能を有効化または無効化します。値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled | プロキシプロトコルを用いて PrivateLinkEpId をバックエンドサーバーに伝達する機能を有効化または無効化します。値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled | プロキシプロトコルを用いて 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リスナー新規接続レート制限(CPS)の構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps
説明 | 対応する CCM バージョン |
Network Load Balancer インスタンスの 1 秒あたりの新規接続レート制限(CPS)。値の範囲:[0, 1000000]。0 の場合、レート制限は適用されません。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerリスナー接続アイドルタイムアウトの構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout
説明 | 対応する CCM バージョン |
接続アイドルタイムアウト。単位:秒。値の範囲:[10, 900]。 デフォルト値:900 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: 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 証明書管理 ページで作成または照会してください。 以下の図は例を示しています。
| |
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 証明書管理 ページで作成または照会してください。 以下の図は例を示しています。
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids | 拡張証明書 ID。複数の拡張証明書はカンマ (,) で区切ります。 Certificate Management Service コンソール にログインし、SSL 証明書管理 ページで作成または照会してください。 以下の図は例を示しています。
|
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "tcpssl:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${CertIdentifier}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-cert-ids: "${CertIdentifier-1},${CertIdentifier-2}" # 複数の拡張証明書をカンマで区切ります。
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 80
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerサーバーグループの代表的な操作
スケジューリングポリシーの構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
説明 | 対応する CCM バージョン |
スケジューリングアルゴリズム。値:
デフォルト値: このオプションの他の値については、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 | ヘルスチェック用のサーバーポート。値の範囲:[0, 65535]。デフォルト値:0(サーバーのポートをヘルスチェックポートとして使用)。 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェック応答の最大タイムアウト。単位:秒。値の範囲:[1, 300]。 デフォルト値:5 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | サーバーのヘルスチェックステータスを「異常」から「正常」に変更するために必要な、連続成功ヘルスチェック回数。値の範囲:[2, 10]。 デフォルト値:2 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | サーバーのヘルスチェックステータスを「正常」から「異常」に変更するために必要な、連続失敗ヘルスチェック回数。値の範囲:[2, 10]。 デフォルト値:2 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェック間隔。単位:秒。値の範囲:[1, 50]。 デフォルト値:10 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: 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 文字。英字、数字、および記号のみ許可されます。先頭はスラッシュ (/) である必要があります。詳細については、「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(サーバーのポートをヘルスチェックポートとして使用)。 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェック応答の最大タイムアウト。単位:秒。値の範囲:[1, 300]。 デフォルト値:5 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | サーバーのヘルスチェックステータスを「異常」から「正常」に変更するために必要な、連続成功ヘルスチェック回数。値の範囲:[2, 10]。 デフォルト値:2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | サーバーのヘルスチェックステータスを「正常」から「異常」に変更するために必要な、連続失敗ヘルスチェック回数。値の範囲:[2, 10]。 デフォルト値:2 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェック間隔。単位:秒。値の範囲:[1, 50]。 デフォルト値:10 | |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method | ヘルスチェックメソッド。値:
説明 このパラメーターは、 |
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 サーバーグループの分類および説明については、「NLB サーバーグループ」をご参照ください。 | v2.8.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # 例:cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-server-group-type: "Ip"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer既存のサーバーグループの再利用
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
既存の vServer グループを再利用します。これは、既存の NLB を再利用する場合にのみ有効です。具体的な例については、「既存のロードバランサーを再利用してクラスター間でサービスを展開」をご参照ください。
サービストラフィックの重み付けの構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
複数の Service が同一の NLB を再利用する場合、このアノテーションを使用して、現在の Service のトラフィック重みを構成します。このアノテーションは、既存のサーバーグループを再利用する場合にのみ有効です。具体的な例については、「既存のロードバランサーを再利用してクラスター間でサービスを展開」をご参照ください。
バックエンドサーバーの重み付け更新を無視
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
説明 | 対応する CCM バージョン |
Service の同期中に、サーバーグループ内のバックエンドサーバーの重み付けを更新しないようにスキップします。この構成は、CCM 以外の仕組みでバックエンドサーバーの重み付けを手動で管理する必要があるシナリオに適用されます。値:
デフォルト値: | 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
