高度な負荷分散機能を有効にするには、Service YAML ファイルでアノテーションを使用して、CLB、リスナー、バックエンドサーバーグループの 3 種類のリソースを設定します。
目次
主な内容 | クイックリンク |
アノテーション
アノテーションでは大文字と小文字が区別されます。
アノテーションを使用する前に、このトピックでサポートされている 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 バージョン |
ロードバランサーのアドレスタイプを指定します。有効な値:
| internet | 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 | インスタンスの課金方法を指定します。仕様課金インスタンスを作成するには、`PayBySpec` を使用します。
| PayBySpec | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | ロードバランサーインスタンスの仕様。詳細については、「CreateLoadBalancer」をご参照ください。このアノテーションを使用して、特定の仕様の CLB インスタンスを作成したり、既存のインスタンスの仕様を更新したりします。 重要 CLB コンソールで仕様を変更した場合 (この操作は仕様課金インスタンスでのみサポートされます)、CCM が変更を元に戻す可能性があります。 | slb.s1.small | 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 | 既存の CLB インスタンスの ID。
| ||
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | CLB インスタンスのリスナーを強制的に上書きするかどうかを指定します。有効な値:
重要 既存の CLB を再利用し、 | "false" | 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 | ロードバランサーインスタンスの課金方法。有効な値:
| paybytraffic | 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 | ロードバランサーのアドレスタイプを指定します。有効な値:
| internet | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | ロードバランサーインスタンスが属する VSwitch の ID。VSwitch は Kubernetes クラスターと同じ VPC にある必要があります。 このアノテーションでは、 VSwitch ID は VPC コンソールで確認できます。 | なし | 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 | ロードバランサーのアドレスタイプを指定します。有効な値:
| internet | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | ロードバランサーインスタンスが属する VSwitch の ID。VSwitch は Kubernetes クラスターと同じ VPC にある必要があります。 このアノテーションでは、 VSwitch ID は VPC コンソールで確認できます。 | なし | 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 モードで実行されている必要があります。有効な値:
| ipv4 | 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 バージョン |
ロードバランサーインスタンスの削除保護が有効かどうかを指定します。有効な値:
重要 CLB コンソールで削除保護を有効にしても、 | on | 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 バージョン |
ロードバランサーインスタンスの変更保護ステータスを指定します。有効な値:
| ConsoleProtection | 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/TCP,443/TCP 10s従量課金ロードバランサーの作成
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
説明 | デフォルト値 | サポートされている CCM バージョン |
インスタンスの課金方法。有効な値:
重要 消費量で課金されるロードバランサーインスタンスの仕様は設定できません。値 | PayBySpec | 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」をご参照ください。 | 0 | 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スティッキーセッション (クッキーの挿入) の設定
この機能は、次の表に示すように、複数のアノテーションを使用して設定されます。クッキーの挿入方法を使用するには、これらのアノテーションのうち 3 つが必要です。
この機能は、HTTP または HTTPS リスナーを持つロードバランサーインスタンスにのみ適用されます。
デフォルトでは、このスティッキーセッション設定は、設定されているすべての HTTP および HTTPS リスナーに適用されます。
アノテーション | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session | スティッキーセッションを有効または無効にします。この設定は HTTP および HTTPS リスナーにのみ適用されます。有効な値:
詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。 | off | 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 | クッキーのタイムアウト (秒)。有効な範囲は 1~86,400 です。このアノテーションは、 詳細については、「CreateLoadBalancerHTTPListener」および「CreateLoadBalancerHTTPSListener」をご参照ください。 | なし | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-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 を記録してください。
アノテーション | 説明 | デフォルト値 | サポートされているバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status | アクセス制御を有効にするかどうかを指定します。有効な値:
| off | 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
説明 | デフォルト値 | サポートされているバージョン |
スケジューリングアルゴリズム。有効な値:
| rr | 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
説明 | デフォルト | サポートされている 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 に送信します。
アノテーション | 説明 | デフォルト値 | サポートされている 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ヘルスチェック付きリスナーの作成
TCP ヘルスチェックの設定
アノテーション: 必要なアノテーションを次の表に示します。
デフォルトでは、TCP ポートに対してヘルスチェックが有効になっています。
アノテーション | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch | TCP および UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効な値:
| on | v2.6.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックタイプ。有効な値:
詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | tcp | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェックの応答を待つ時間 (秒)。この期間内にバックエンドサーバーが応答しない場合、ヘルスチェックは失敗します。有効な値:1~300。
| 5 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーのステータスを 有効な値:2~10。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | 3 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーのステータスを | 3 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックの間隔 (秒)。有効な値:1~50。詳細については、「CreateLoadBalancerTCPListener」をご参照ください。 | 2 | 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 リスナーのヘルスチェックを有効にするかどうかを指定します。有効な値:
| on | v2.6.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェックの応答タイムアウト。このパラメーターは UDP リスナーに適用されます。このタイムアウト内にバックエンドサーバーが応答しない場合、ヘルスチェックは失敗します。単位:秒。値の範囲:[1, 300]。
| 5 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーのステータスを 値の範囲:[2, 10]。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | 3 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーのステータスを | 3 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックの間隔。単位:秒。値の範囲:[1, 50]。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | 2 | 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 リスナーのヘルスチェックを有効にするかどうかを指定します。有効な値:
| on | 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 | 有効な値:
| off | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックのプロトコル。有効な値:
詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | tcp | 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」をご参照ください。 | http_2xx | 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 | HTTP ヘルスチェックへの応答を待つ時間 (秒)。この期間内に応答がない場合、ヘルスチェックは失敗します。 単位:秒。有効な値:1~300。
詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | なし | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | バックエンドサーバーが正常と見なされるまでに必要な連続した成功したヘルスチェックの回数 (ステータスが fail から success に変更)。 有効な値:2~10。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | 3 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | バックエンドサーバーが異常と見なされるまでに必要な連続した失敗したヘルスチェックの回数 (ステータスが success から fail に変更)。有効な値:2~10。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | 3 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックの間隔。単位:秒。有効な値:1~50。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | 2 | 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 ヘッダーフィールドを使用して CLB インスタンスのリスナープロトコルを取得するかどうかを指定します。有効な値:
| off | v2.1.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport | XForwardedFor_SLBPORT ヘッダーフィールドを使用してロードバランサーインスタンスのリスナーポートを取得するかどうかを指定します。有効な値:
| off | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport | XForwardedFor_ClientSrcPort ヘッダーフィールドを使用してクライアントの送信元ポートを取得するかどうかを指定します。有効な値:
| off | 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 機能を有効または無効にします。有効な値:
| on | 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 の間でなければなりません。 バックエンドサーバーが指定されたタイムアウト内に応答しない場合、ロードバランサーはクライアントに HTTP 504 エラーを返します。 | 60 | 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 を指定します。 SLB コンソールで、証明書 ページで証明書 ID を確認します。 説明 証明書を作成するには、「Alibaba Cloud 発行の証明書の選択」をご参照ください。 | なし | v1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | セキュリティポリシーを指定します。これにより、HTTPS リスナーの TLS プロトコルバージョンとサポートされる暗号スイートが決定されます。詳細については、「CreateLoadBalancerHTTPSListener」をご参照ください。有効な値:
| tls_cipher_policy_1_0 | 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: LoadBalancerTCP と UDP の設定
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: LoadBalancerTCP および UDP リスナーの Proxy Protocol の設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | デフォルト | サポートされているバージョン |
TCP および UDP リスナーに対して Proxy Protocol を有効にします。有効にすると、ロードバランサーはクライアントの送信元アドレスをバックエンドサーバーに渡します。有効な値:
重要 この機能はシームレスな移行をサポートしていません。Proxy Protocol の有効化または無効化にはサービスのアップグレードが必要であり、サービスの中断を引き起こします。この設定は慎重に行ってください。 | off | 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-vgroup-port。このアノテーションにより、既存の仮想サーバーグループを再利用できます。これは、既存の CLB インスタンスを再利用する場合にのみ適用されます。詳細な例については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。
サービスのトラフィックの重みの設定
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
複数のサービスが同じ CLB インスタンスを再利用する場合、このアノテーションを使用して現在のサービスのトラフィックの重みを設定します。この設定は、既存の仮想サーバーグループを再利用する場合にのみ適用されます。詳細な例については、「既存のロードバランサーを再利用してクラスター間でサービスをデプロイする」をご参照ください。
バックエンドサーバーの重み更新のスキップ
アノテーション: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
説明 | サポートされている CCM バージョン |
サービス同期中に仮想サーバーグループ内のバックエンドサーバーの重みの更新をスキップします。これにより、バックエンドサーバーの重みをを手動で管理できます。有効な値:
デフォルト値: | 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