高度な負荷分散を実現するために、Service の YAML ファイルにアノテーションを追加することで、クラシックロードバランサー (CLB)、リスナー、およびバックエンドサーバーグループを設定できます。
目次
カテゴリ | 機能カテゴリ | 設定リンク |
クラシックロードバランサーの作成 | ||
既存インスタンスの指定 | ||
CLB の設定 | ||
インスタンス保護の有効化 | ||
セッション維持の設定 | ||
ポートとプロトコルの設定 | ||
詳細設定 | ||
設定管理 | ||
アノテーションの使用方法
アノテーションでは大文字と小文字が区別されます。
アノテーションを使用する前に、必要な Cloud Controller Manager (CCM) コンポーネントのバージョンを確認してください。CCM コンポーネントをアップグレードするには、「コンポーネント管理」をご参照ください。CCM コンポーネントの変更履歴については、「Cloud Controller Manager」をご参照ください。
2019年9月11日より、
annotationsフィールド内のalicloudはalibaba-cloudに更新されました。例:
変更前:
service.beta.kubernetes.io/alicloud-loadbalancer-id変更後:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idシステムは古い
alicloudアノテーションも引き続きサポートしているため、既存の設定を変更する必要はありません。
CLB の一般的な操作
パブリックロードバランサーの作成
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerプライベートロードバランサーの作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
説明 | サポートされる CCM バージョン |
ロードバランサーのアドレスタイプを指定します。有効値:
デフォルト値: CLB には手動で VSwitch を指定することを推奨します。詳細については、「ロードバランサーの VSwitch の指定」をご参照ください。VSwitch を指定しない場合、システムは CCM のバージョンに基づいて自動的に VSwitch を選択します:
| v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerロードバランサーの仕様
アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type | インスタンスの課金タイプ。有効値:
デフォルト値: 重要
| v2.4.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | ロードバランサーインスタンスの仕様。このアノテーションを使用して、特定の仕様の CLB インスタンスを作成したり、既存のインスタンスの仕様を更新したりします。有効値:
デフォルト値: このオプションの有効値に関する詳細については、「CreateLoadBalancer」をご参照ください。 重要 スペック課金型 CLB インスタンスの仕様を CLB コンソールで変更すると、CCM がその変更を元に戻す可能性があります。操作にはご注意ください。 | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer既存のロードバランサーの使用
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
説明 | サポートされる CCM バージョン |
重要
ロードバランサーインスタンスの ID。このアノテーションを使用して、既存の CLB を指定します。
| v1.9.3.81-gca19cd4-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer既存のロードバランサーを使用し、リスナーを強制的に上書き
アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。既存のリスナーを強制的に上書きすると、ポートの競合が発生した場合に既存のリスナーが削除されます。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | 重要 クラスターの利用不可やトラフィックの中断などの予期しない動作を防ぐため、API サーバーの CLB や CCM によって作成された CLB は再利用しないでください。代わりに、クラシックロードバランサー (CLB) コンソールで新しいインスタンスを手動で作成してください。 ロードバランサーインスタンスの ID。このアノテーションを使用して、既存の CLB を指定します。
| v1.9.3.81-gca19cd4-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | 既存のロードバランサーを再利用する際に、サービスのリスナー設定を CLB と同期するかどうかを決定します。
デフォルト値: 重要 リスナー設定の競合を避けるため、 | v1.9.3.81-gca19cd4-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerプライマリおよびスタンバイのアベイラビリティゾーンの指定
アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。プライマリおよびスタンバイのアベイラビリティゾーンは、作成後に変更することはできません。
一部のリージョンでは、ロードバランサーはプライマリおよびスタンバイのアベイラビリティゾーンをサポートしていません。正確な情報については、CLB コンソールのインスタンス作成ページをご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid | プライマリバックエンドサーバーのアベイラビリティゾーン ID。 | v1.9.3.10-gfb99107-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid | スタンバイバックエンドサーバーのアベイラビリティゾーン ID。 | v1.9.3.10-gfb99107-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer帯域幅課金型ロードバランサーの作成
アノテーション: 複数のアノテーションが使用されます。次の 2 つのアノテーションが必要です。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | ロードバランサーインスタンスの課金タイプ。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth | ロードバランサーのピーク帯域幅。デフォルト値: 50。このアノテーションはパブリックロードバランサーにのみ適用されます。その他の制限については、「パブリックロードバランサーインスタンスの課金方法の変更」をご参照ください。 | v1.9.3.10-gfb99107-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerロードバランサーの VSwitch の指定
アノテーション: 複数のアノテーションが使用されます。次の 2 つのアノテーションが必要です。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | ロードバランサーのアドレスタイプを指定します。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | ロードバランサーインスタンスの VSwitch ID。VSwitch は Kubernetes クラスターと同じ Virtual Private Cloud (VPC) 内にある必要があります。 このアノテーションを使用する場合、 VSwitch ID を確認するには、Virtual Private Cloud コンソールに移動してください。 | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerプライベートロードバランサーの IP アドレスの指定
アノテーション: 複数のアノテーションが使用されます。次の 3 つのアノテーションが必要です。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | ロードバランサーのアドレスタイプを指定します。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | ロードバランサーインスタンスの VSwitch ID。VSwitch は Kubernetes クラスターと同じ Virtual Private Cloud (VPC) 内にある必要があります。 このアノテーションを使用する場合、 VSwitch ID を確認するには、Virtual Private Cloud コンソールにログインしてください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip | プライベートロードバランサーインスタンスの IP アドレス。
| v2.7.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
name: nginx
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
name: http
selector:
app: nginxロードバランサーへの追加タグの付与
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
説明 | サポートされる CCM バージョン |
追加するタグのカンマ区切りリスト。例: 重要 このアノテーションをサービスに追加した後、コンソールで対応するロードバランサーインスタンスのタグを後から変更すると、上書きされる可能性があります。 | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerIPv6 ロードバランサーの作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
説明 | サポートされる CCM バージョン |
ロードバランサーインスタンスの IP バージョン。IP バージョンはインスタンス作成後に変更できません。この機能を使用するには、クラスターの kube-proxy モードが IPVS である必要があります。有効値:
デフォルト値: | v1.9.3.220-g24b1885-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerロードバランサーの削除保護の有効化
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
説明 | サポートされる CCM バージョン |
ロードバランサーの削除保護設定。有効値:
デフォルト値: 重要
| v1.9.3.313-g748f81e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerロードバランサーの変更保護の有効化
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
説明 | サポートされる CCM バージョン |
ロードバランサーの変更保護設定。有効値:
デフォルト値: | v1.9.3.313-g748f81e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerロードバランサー名の指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | サポートされる CCM バージョン |
ロードバランサーインスタンスの名前。名前の長さは 2~128 文字である必要があります。英字 (大文字と小文字を区別しない) または漢字で始まり、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-) を含めることができます。 | v1.9.3.313-g748f81e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerロードバランサーのリソースグループの指定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | サポートされる CCM バージョン |
ロードバランサーのリソースグループ ID。リソースグループ ID は、ロードバランサーの作成後に変更することはできません。リソースグループ ID を確認するには、Resource Management コンソールに移動してください。 | v1.9.3.313-g748f81e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerサービスのホスト名の設定
アノテーション: 複数のアノテーションが使用されます。詳細は次の表をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname | サービスのホスト名を設定します。ホスト名は DNS 命名規則に従う必要があります。 注意事項:
| v2.3.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
name: nginx-svc
namespace: default
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer期待される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc loadBalancer 47.100.XX.XX www.example.com 80:30248/TCP,443:32670/TCP 10s使用量課金型ロードバランサーの作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
説明 | サポートされる CCM バージョン |
インスタンスの課金タイプ。有効値:
デフォルト値: 重要
| v2.4.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerリスナーの操作
TCP リスナーのセッション維持タイムアウトの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout
説明 | サポートされる CCM バージョン |
TCP リスナーのセッション維持タイムアウトを秒単位で設定します。デフォルトでは、この設定はロードバランサー上のすべての TCP リスナーに適用されます。 値は 0 から 3600 までの整数である必要があります。値 0 はセッション維持を無効にします。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerスティッキーセッション (Cookie の挿入) の設定
アノテーション: 利用可能なアノテーションは次の表に記載されています。Cookie の挿入メソッドを使用するには、以下に記載されている 4 つのアノテーションが必要です。
この機能は、HTTP または HTTPS プロトコルを使用するロードバランサーインスタンスのみをサポートします。
複数の HTTP または HTTPS リスナーポートを設定した場合、スティッキーセッションの設定はデフォルトですべてに適用されます。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session | スティッキーセッションを有効にするかどうかを指定します。このアノテーションは HTTP および HTTPS リスナーにのみ適用されます。有効値:
デフォルト値: 詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type | スティッキーセッションのタイプ。このアノテーションは HTTP および HTTPS リスナーにのみ適用されます。このアノテーションは、
詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout | Cookie のタイムアウト。このパラメーターは、 詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie | サーバーで設定されている Cookie の名前。 名前は 1~200 文字の長さで、ASCII 文字と数字のみを含む必要があります。名前にはカンマ (,)、セミコロン (;)、スペースを含めることはできません。名前はドル記号 ($) で始めることはできません。 このパラメーターは、 詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerアクセス制御リストの設定
アノテーション: 次の 3 つのアノテーションが必要です。
これらのアノテーションを使用してアクセス制御付きのロードバランサーを作成する前に、クラシックロードバランサー (CLB) コンソールでアクセス制御リストを作成し、その ID (acl-id) を記録してください。
アノテーション | 説明 | CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status | アクセス制御を有効にするかどうかを指定します。有効値:
デフォルト: | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id | リスナーのアクセス制御リストの ID。このパラメーターは、 | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type | アクセス制御のタイプ。有効値:
| v1.9.3.164-g2105d2e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}" # 複数のアクセス制御リストはサポートされていません。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerロードバランサーのポートフォワーディングの設定
ポートフォワーディングは、HTTP ポートからのリクエストを HTTPS ポートにリダイレクトします。
アノテーション: 次の表に、必要な 3 つのアノテーションを示します。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Alibaba Cloud 上の証明書の ID。 CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。 説明 証明書を作成するには、「Alibaba Cloud 発行の証明書の選択」をご参照ください。 | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port | HTTP リクエストを指定された HTTPS ポートに転送します。例: | v1.9.3.164-g2105d2e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 80
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerスケジューリングアルゴリズムの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
説明 | サポートされる CCM バージョン |
スケジューリングアルゴリズムを指定します。有効値:
デフォルト値: 詳細については、CLB リスナーを作成するための API リファレンスの | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerUDP リスナーの作成
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancerHTTP リスナー
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port
ヘルスチェック:デフォルトでは、HTTP リスナーのヘルスチェックは無効になっています。バックエンドサービスが利用可能であることを確認するために、リスナーポートに HTTP または TCP のヘルスチェックを設定してください。
クラスター内からクラシックロードバランサー (CLB) の IP アドレスを使用して Service にアクセスすると、リクエストトラフィックが傍受され、アクセスに問題が発生する可能性があります。トラフィックを強制的に CLB を経由してヘアピンさせるには、「サービスのホスト名の設定」で説明されているように、必要なアノテーションを追加します。詳細については、「クラスター内から LoadBalancer Service の外部 IP アドレスにアクセスする際の注意事項」をご参照ください。
説明 | サポートされる CCM バージョン |
複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerHTTPS リスナーの作成
アノテーション: 次の表に、利用可能なアノテーションを示します。
CLB は HTTPS リクエストを復号し、HTTP リクエストとしてバックエンド Pod に送信します。
ヘルスチェック:デフォルトでは、HTTPS リスナーのヘルスチェックは無効になっています。バックエンドサービスが利用可能であることを確認するために、リスナーポートに HTTP または TCP のヘルスチェックを設定してください。
クラスター内からクラシックロードバランサー (CLB) の IP アドレスを使用して Service にアクセスすると、リクエストトラフィックが傍受され、アクセスに問題が発生する可能性があります。トラフィックを強制的に CLB を経由してヘアピンさせるには、「サービスのホスト名の設定」で説明されているように、必要なアノテーションを追加します。詳細については、「クラスター内から LoadBalancer Service の外部 IP アドレスにアクセスする際の注意事項」をご参照ください。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Alibaba Cloud からの証明書 ID。 CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。 説明 証明書を作成するには、「Alibaba Cloud 署名付き証明書の選択」をご参照ください。 | v1.9.3.164-g2105d2e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer拡張ドメイン証明書の設定
アノテーション: 次の表に、利用可能なアノテーションを示します。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Alibaba Cloud からの証明書 ID。 CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。 説明 証明書を作成するには、「Alibaba Cloud 署名付き証明書の選択」をご参照ください。 | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions |
CLB コンソールにログインし、[証明書管理] ページで証明書 ID を表示します。 | v2.13.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions: "${DOMAIN_1}:${CERT_ID_1},${DOMAIN_2}:${CERT_ID_2}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerヘルスチェック付きリスナー
TCP ヘルスチェック
アノテーション: 以下のすべてのアノテーションが必要です。
TCP ポートでは、ヘルスチェックはデフォルトで有効になっています。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch | TCP および UDP リスナーのヘルスチェックを有効または無効にします。有効値:
デフォルト値: | v2.6.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックタイプを指定します。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | TCP ヘルスチェックの応答タイムアウトを指定します。バックエンドの Elastic Compute Service (ECS) インスタンスがこの時間内に応答しない場合、ヘルスチェックは失敗します。単位:秒。値の範囲:[1, 300]。
| v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーのヘルスステータスを 値の範囲:[2, 10]。デフォルト値: 3。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーのヘルスステータスを success から fail に変更するために必要な連続した失敗したヘルスチェックの回数を指定します。値の範囲:[2, 10]。デフォルト値: 3。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックの間隔を秒単位で指定します。値の範囲:[1, 50]。デフォルト値: 2。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "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: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerUDP ヘルスチェック
アノテーション: 以下の表のアノテーションが必要です。
UDP ポートでは、ヘルスチェックはデフォルトで有効になっています。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch | TCP および UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効値:
デフォルト値: | v2.6.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェック応答のタイムアウト期間。バックエンドサーバーがこの期間内に応答しない場合、ヘルスチェックは失敗します。単位:秒。値は 1 から 300 までの整数である必要があります。
| v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーを正常とマークするために必要な連続した成功したヘルスチェックの回数。 値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーを異常とマークするために必要な連続した失敗したヘルスチェックの回数。値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックの間隔 (秒単位)。値は 1 から 50 までの整数である必要があります。デフォルト値は 2 です。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancerTCP および UDP ヘルスチェックの無効化
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch
説明 | サポートされる CCM バージョン |
TCP および UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効値:
デフォルト値: | v2.6.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" # ヘルスチェックを無効にします。
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerHTTP ヘルスチェック
アノテーション: 次の表に、利用可能なアノテーションを示します。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | 有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックタイプを指定します。有効値:
デフォルト値: 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | ヘルスチェック用の URI。このアノテーションは HTTP ヘルスチェックにのみ適用されます。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode | ヘルスチェックが成功したことを示す HTTP ステータスコード。複数のコードはカンマ (
デフォルト値: 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | ヘルスチェックに使用されるドメイン名。有効値:
詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout | ヘルスチェック応答を待つ最大時間。バックエンドの ECS インスタンスがこの期間内に応答しない場合、ヘルスチェックは失敗します。 単位:秒。値の範囲:[1, 300]。
詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | 失敗したバックエンドサーバーを正常とマークするために必要な連続した成功したヘルスチェックの回数。 値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | 正常なバックエンドサーバーを失敗とマークするために必要な連続した失敗したヘルスチェックの回数。値は 2 から 10 までの整数である必要があります。デフォルト値は 3 です。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックの間隔 (秒単位)。値は 1 から 50 までの整数である必要があります。デフォルト値は 2 です。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ ( | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method | ヘルスチェックの HTTP メソッド。有効値:
| v2.3.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
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-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
# オプション。ヘルスチェックの HTTP ステータスコードを設定します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
# オプション。ヘルスチェックのドメイン名を設定します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
# オプション。ヘルスチェックメソッドを設定します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer接続ドレインの有効化
アノテーション: この機能を有効にするには、次の表で説明する両方のアノテーションを指定する必要があります。
この機能は TCP および UDP リスナーのみをサポートします。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain | 接続ドレインを有効または無効にします。
| v2.0.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout | 接続ドレインのタイムアウト (秒単位)。値の範囲:10~900。 | v2.0.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerリスナーリクエストヘッダーの設定
アノテーション: 利用可能なアノテーションは次の表に記載されています。
HTTP と HTTPS のみがサポートされています。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto | 'X-Forwarded-Proto' リクエストヘッダーを使用してリスナープロトコルを取得するかどうかを指定します。有効値:
デフォルト値: | v2.1.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport | 'XForwardedFor_SLBPORT' リクエストヘッダーを使用してロードバランサーインスタンスのリスナーポートを取得するかどうかを指定します。有効値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport | 'XForwardedFor_ClientSrcPort' リクエストヘッダーを使用してクライアントのソースポートを取得するかどうかを指定します。有効値:
デフォルト値: | v2.9.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer接続アイドルタイムアウト
アノテーション: 複数。次の表をご参照ください。
HTTP と HTTPS のみがサポートされています。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout | リスナーの接続アイドルタイムアウトを秒単位で指定します。値は 1 から 60 までである必要があります。 デフォルト: 15 | v2.1.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerリスナーの HTTP/2 の無効化
アノテーション: この機能は、次の表にリストされているアノテーションを使用します。
この機能は HTTPS リスナーにのみ適用されます。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Alibaba Cloud 上の証明書の ID。 CLB コンソールにログインし、[証明書管理] ページで証明書 ID を確認します。 説明 証明書を作成するには、「Alibaba Cloud 署名付き証明書の選択」をご参照ください。 | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled | HTTP/2 を有効または無効にします。有効値:
デフォルト値: | v2.1.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerリスナーリクエストタイムアウトの設定
アノテーション: 次の表に、利用可能なアノテーションを示します。
HTTP および HTTPS リスナーのみがサポートされています。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマで区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout | リクエストタイムアウト (秒単位)。値は 1 から 180 までの整数である必要があります。デフォルト値: 60。 バックエンドサーバーが指定されたタイムアウト内に応答しない場合、ロードバランサーはクライアントに HTTP 504 エラーを返します。 | v2.3.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer確立済み接続のタイムアウトの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout
TCP プロトコルのみがサポートされています。
説明 | サポートされる CCM バージョン |
確立済み接続のタイムアウト (秒単位)。有効値:[10, 900]。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | v2.3.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerリスナーセキュリティポリシーの設定
アノテーション: 次の表に、利用可能なアノテーションを示します。
HTTPS プロトコルのみがサポートされています。
アノテーション | 説明 | サポートされる CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマで区切ります。例: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | Alibaba Cloud 上の証明書の ID を指定します。 ID を確認するには、CLB コンソールにログインし、[証明書管理] ページに移動します。 説明 証明書を作成するには、「Alibaba Cloud 発行の証明書の選択」をご参照ください。 | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | セキュリティポリシーは、HTTPS リスナーでサポートされる TLS プロトコルバージョンと暗号スイートを定義します。詳細については、「CreateLoadBalancerHTTPSListener」をご参照ください。有効値:
デフォルト値: | v2.4.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerリスナーでの TCP と UDP
この機能には Kubernetes クラスター v1.24 以降が必要です。ACK クラスターの K8s バージョンをアップグレードするには、「ACK クラスターの K8s バージョンのアップグレード」をご参照ください。
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: udp
port: 80
protocol: UDP
targetPort: 81
selector:
app: nginx
sessionAffinity: None
type: LoadBalancerProxy Protocol の設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
クラスター内から Cloud Load Balancer (CLB) の IP アドレスを使用してサービスにアクセスすると、トラフィックが中断され、アクセスに問題が発生する可能性があります。トラフィックを強制的に CLB を経由してヘアピンさせるには、「サービスのホスト名の設定」で説明されているように、必要なアノテーションを追加します。詳細については、「クラスター内で LoadBalancer Service の外部 IP アドレスにアクセスする際の注意事項」をご参照ください。
説明 | サポートされる CCM バージョン |
TCP および UDP リスナーの Proxy Protocol を設定します。有効にすると、リスナーは Proxy Protocol を使用してクライアントのソースアドレスをバックエンドサーバーに渡します。有効値:
デフォルト: 重要 この機能はシームレスなオンライン変更をサポートしていません。Proxy Protocol のオン/オフを切り替えるには、サービスの再起動が必要です。そのため、この設定は慎重に行ってください。 | v2.6.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerバックエンドサーバーグループの一般的な操作
特定のラベルを持つワーカーノードの使用
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label
説明 | サポートされる CCM バージョン |
ラベルに基づいて、クラシックロードバランサー (CLB) インスタンスのバックエンドサーバーとして追加するワーカーノードを指定します。複数のラベルはカンマ (,) で区切ります。例: | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerPod をホストするノードの使用
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
デフォルトでは、externalTrafficPolicy は Cluster に設定されており、クラスター内のすべてのノードがバックエンドサーバーグループに追加されます。Local モードでは、サービスの Pod を実行するノードのみがバックエンドサーバーになります。
説明 | サポートされる CCM バージョン |
スケジューリングアルゴリズム。有効値:
デフォルト値: | v1.9.3 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerスケジュール不可 ノードの削除
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
説明 | サポートされる CCM バージョン |
デフォルト値: | v1.9.3.164-g2105d2e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerPod ENI をバックエンドサーバーグループにアタッチ
アノテーション: service.beta.kubernetes.io/backend-type
説明 | デフォルト | サポートされる CCM バージョン |
クラシックロードバランサー (CLB) インスタンスのバックエンドサーバーのタイプ。有効値:
|
| v1.9.3.164-g2105d2e-aliyun 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/backend-type: "eni"
name: nginx
spec:
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer既存の VServer グループの再利用
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
既存の VServer グループを再利用します。このアノテーションは、既存のクラシックロードバランサー (CLB) インスタンスを再利用する場合にのみ適用されます。使用例については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。
Service のトラフィックの重みの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
複数の Service が同じクラシックロードバランサー (CLB) インスタンスを再利用する場合、このアノテーションを使用して現在の Service のトラフィックの重みを設定できます。このアノテーションは、既存の VServer グループを再利用する場合にのみ適用されます。使用例については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。
バックエンドサーバーの重みの更新を無視
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
説明 | サポートされる CCM バージョン |
Service の調整中に VServer グループ内のバックエンドサーバーの重みの更新をスキップするかどうかを指定します。これは、バックエンドサーバーの重みが別のメカニズムによって管理されている場合に便利です。有効値:
デフォルト値: | v2.11.1 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerバックエンドサーバーのデフォルトの重みの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight
説明 | サポートされる CCM バージョン |
バックエンドサーバーグループ内のサーバーのデフォルトの重みを設定します。重みが大きいバックエンドサーバーは、より多くのトラフィックを受け取ります。 値は 0 から 100 までの整数である必要があります。このアノテーションを省略した場合、システムはネットワークタイプに基づいてデフォルトの重みを使用します。 この設定は、バックエンドインスタンスが Elastic Compute Service (ECS) インスタンスであり、Service の | v2.14.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
# バックエンドサーバーグループ内のサーバーのデフォルトの重みを 35 に設定します。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer