Service に Network Load Balancer (NLB) インスタンスを使用する場合、YAML ファイルのアノテーションを使用して、NLB インスタンスのネットワークタイプを指定したり、設定変更保護を有効にしたり、相互認証を設定したりするなど、高度な負荷分散機能を設定できます。このトピックでは、Service YAML ファイルで使用できるアノテーションについて説明し、NLB インスタンス、リスナー、サーバーグループの一般的な設定を行います。
インデックス
カテゴリ | 機能カテゴリ | 設定リンク |
ロードバランサーの作成 | ||
インスタンス設定 | ||
セキュリティ設定 | ||
リスナーの作成 | ||
リスナー設定 | ||
セキュリティ設定 | ||
サーバー設定 | ||
考慮事項
クラスターのバージョンは 1.24 以降、Cloud Controller Manager (CCM) のバージョンは 2.5.0 以降です。クラスターをアップグレードするには、「ACK クラスターの手動アップグレード」をご参照ください。コンポーネントをアップグレードするには、「コンポーネントの管理」をご参照ください。
Service の定義で、
spec.loadBalancerClassをalibabacloud.com/nlbに設定します。このパラメーターを指定しない場合、デフォルトで Classic Load Balancer (CLB) インスタンスが作成されます。Service の作成後、
spec.loadBalancerClassの値は変更できません。CLB リソースを NLB リソースに変換したり、その逆を行ったりすることはできません。ACK コンソールで NLB インスタンスを管理することはできません。
kubectlコマンドを使用する必要があります。
NLB インスタンスでの一般的な操作
パブリック NLB インスタンスの作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps
説明 | サポートされる CCM バージョン |
NLB インスタンスのゾーンを指定します。 NLB コンソールにログインして、NLB がサポートするリージョンとゾーンを表示できます。少なくとも 2 つのゾーンが必要です。複数のゾーンはコンマ (,) で区切ります。例: | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
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 コンソールにログインして、NLB がサポートするリージョンとゾーンを表示できます。少なくとも 2 つのゾーンが必要です。複数のゾーンはコンマ (,) で区切ります。例: | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerロードバランサー名の指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | サポートされる CCM バージョン |
ロードバランサーインスタンスの名前を指定します。名前は 2~128 文字で、英字または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "${your-nlb-name}" # NLB インスタンスの名前。
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerロードバランサーのリソースグループの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | サポートされる CCM バージョン |
ロードバランサーが属するリソースグループを指定します。リソースグループ ID は、指定後に変更することはできません。 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 バージョンを指定します。IP バージョンは、NLB インスタンスの作成後に変更することはできません。クラスターの 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: LoadBalancerロードバランサーへの追加タグの付与
アノテーション: 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既存のロードバランサーの再利用
アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | 既存のロードバランサーの ID。 | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | Service に基づいて NLB リスナー設定を同期するかどうかを指定します。有効値:
デフォルト値: |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${your-nlb-id}" # NLB インスタンスの ID。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancer共有帯域幅インスタンスの関連付け
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id
説明 | サポートされる CCM バージョン |
関連付ける共有帯域幅インスタンスの ID。 VPC コンソールにログインして、共有帯域幅インスタンスの ID をクエリできます。 | v2.9.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth-package-id: "cbwp-xxxxxxxxxx"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
sessionAffinity: None
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerIPv6 アドレスのネットワークタイプの指定
アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version | NLB インスタンスの IP バージョンを指定します。IP バージョンは、NLB インスタンスの作成後に変更することはできません。クラスターの 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 インスタンスは保持され、 この機能が有効な場合、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 クラスターのバージョンが 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:
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 リスナーの作成
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。Digital 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 アドレスを取得する」をご参照ください。
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。Digital Certificate Management Service コンソールにログインし、[SSL 証明書] ページで証明書を作成および表示できます。 次の図に例を示します。
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cacert-id | CA 証明書の ID。Digital 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。Digital 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: LoadBalancerProxy Protocol の構成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | サポートされる CCM バージョン |
Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効値:
デフォルト値: 重要 Proxy Protocol を有効にする前に、バックエンドサービスで Proxy Protocol v2 が有効になっているかどうかを確認してください。有効になっていない場合、アクセスが失敗する可能性があります。このパラメーターは慎重に設定してください。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerProxy Protocol で追加情報を伝送する
アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol | Proxy Protocol を使用してクライアント IP アドレスをバックエンドサーバーに渡すかどうかを指定します。有効値:
デフォルト値: 重要 Proxy Protocol を有効にする前に、バックエンドサービスで Proxy Protocol v2 が有効になっているかどうかを確認してください。有効になっていない場合、アクセスが失敗する可能性があります。このパラメーターは慎重に設定してください。 | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled | Proxy Protocol を使用して VpcId をバックエンドサーバーに渡すかどうかを指定します。有効値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled | Proxy Protocol を使用して PrivateLinkEpId をバックエンドサーバーに渡すかどうかを指定します。有効値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled | Proxy Protocol を使用して PrivateLinkEpsId をバックエンドサーバーに渡すかどうかを指定します。有効値:
デフォルト値: | v2.9.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-ep-id-enabled: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-eps-id-enabled: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ppv2-pvl-vpc-id-enabled: "on"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerリスナーの 1 秒あたりの最大新規接続数の設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps
説明 | サポートされる CCM バージョン |
NLB インスタンスの 1 秒あたりの最大新規接続数。値は 0 から 1,000,000 の範囲でなければなりません。値 0 は制限なしを示します。 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cps: "100"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerリスナーのアイドル接続タイムアウト期間の設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout
説明 | サポートされる CCM バージョン |
アイドル接続タイムアウト期間。単位: 秒。値は 10 から 900 の範囲でなければなりません。 デフォルト値: 900 | v2.5.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: "${zone-A}:${vsw-A},${zone-B}:${vsw-B}" # たとえば、cn-hangzhou-k:vsw-i123456,cn-hangzhou-j:vsw-j654321。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "60"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
loadBalancerClass: "alibabacloud.com/nlb"
type: LoadBalancerALPN ポリシーを構成する
アノテーション: 複数のアノテーションが利用可能です。次の表をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | リスナーのプロトコルタイプを設定します。複数の値はコンマ (,) で区切ります。例: | v2.5.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | サーバー証明書の ID。Digital Certificate Management Service コンソールにログインし、[SSL 証明書] ページで証明書を作成および表示できます。 次の図に例を示します。
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-alpn | Application-Layer Protocol Negotiation (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サーバーグループでの一般的な操作
スケジューリングアルゴリズムの設定
アノテーション: 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
既存のサーバーグループを再利用できます。この機能は、既存の NLB インスタンスを再利用する場合にのみ機能します。詳細については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。
トラフィックを受信する Service の重みの設定
アノテーション: 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
