Service の YAML ファイル内でアノテーションを使用すると、Classic Load Balancer(CLB)インスタンス、リスナー、およびバックエンドサーバーグループの 3 つのレベルでリソースを設定できます。これにより、幅広いロードバランシング機能を利用できます。
目次
カテゴリ | 機能分類 | 設定リンク |
SLB インスタンスの作成 | ||
既存のインスタンスの指定 | ||
SLB インスタンスの構成 | ||
インスタンス保護の有効化 | ||
セッション維持の設定 | ||
ポートおよびプロトコルの構成 | ||
高度な構成 | ||
構成管理 | ||
アノテーションの使用方法
アノテーションは大文字と小文字を区別します。
アノテーションを使用する前に、この機能に対応する Cloud Controller Manager(CCM)のバージョンを確認してください。CCM コンポーネントをアップグレードするには、「コンポーネントの管理」をご参照ください。CCM コンポーネントの変更履歴については、「Cloud Controller Manager」をご参照ください。
2019年9月11日時点から、
alicloudは、annotationsフィールドでalibaba-cloudに更新されました。例:
更新前:
service.beta.kubernetes.io/alicloud-loadbalancer-id更新後:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idシステムは、
alicloud形式との互換性を維持しています。そのため、特別な変更を行う必要はありません。
CLB インスタンスの代表的な操作
インターネット向け SLB インスタンスの作成
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerイントラネット SLB インスタンスの作成
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
説明 | 対応する CCM バージョン |
SLB インスタンスのネットワークタイプを指定します。有効値:
デフォルト値: SLB インスタンスの vSwitch の指定を参照し、CLB インスタンスの vSwitch を手動で指定することを推奨します。vSwitch を指定しない場合、システムは CCM コンポーネントのバージョンに基づいて自動的に選択します:
| 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: LoadBalancerSLB インスタンスの仕様の指定
アノテーション:以下の表に示す複数のアノテーションが利用可能です。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type | インスタンスの課金方法。有効値:
デフォルト値: 重要
| v2.4.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | SLB インスタンスの仕様。このパラメーターを使用して、特定の仕様の CLB インスタンスを作成したり、既存の 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既存の SLB インスタンスの利用
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
説明 | 対応する CCM バージョン |
重要
SLB インスタンスの 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既存の SLB インスタンスの利用と既存リスナーの強制上書き
アノテーション:以下の表に示す複数のアノテーションが利用可能です。既存リスナーの強制上書きは、ポート競合が発生した場合に既存のリスナーを削除します。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | 重要 クラスターの利用不能やトラフィックの中断などの予期しない動作を防ぐため、API Server の CLB インスタンスや CCM によって作成された CLB インスタンスを再利用しないでください。代わりに、Classic Load Balancer(CLB)コンソールで新しくインスタンスを作成してください。 SLB インスタンスの ID。このアノテーションを使用して、既存の CLB インスタンスを指定します。
| v1.9.3.81-gca19cd4-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | 既存の Server Load Balancer をアタッチする際に、サービスに基づいて CLB リスナー構成を同期するかどうかを決定します。
デフォルト値: 重要 既存の 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: LoadBalancerSLB インスタンスのプライマリゾーンおよびセカンダリゾーンの指定
アノテーション:以下の表に示す複数のアノテーションが利用可能です。プライマリゾーンおよびセカンダリゾーンは、インスタンス作成後に変更できません。
一部のリージョンでは、SLB インスタンスがプライマリゾーンおよびセカンダリゾーンをサポートしていません。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帯域幅課金の SLB インスタンスの作成
アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 2 つのアノテーションは必須です。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | SLB インスタンスの課金方法。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth | SLB インスタンスの帯域幅。これはピーク帯域幅です。デフォルト値は 50 です。このパラメーターはインターネット向け SLB インスタンスにのみ適用されます。その他の制限事項については、「インターネット向け SLB インスタンスの課金方法の変更」をご参照ください。 | 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: LoadBalancerSLB インスタンスの vSwitch の指定
アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 2 つのアノテーションは必須です。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | SLB インスタンスのネットワークタイプを指定します。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | SLB インスタンスが属する 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イントラネット SLB インスタンスの IP アドレスの指定
アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 3 つのアノテーションは必須です。
アノテーション | 説明 | 対応する CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | SLB インスタンスのネットワークタイプを指定します。有効値:
デフォルト値: | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | SLB インスタンスが属する vSwitch の ID。vSwitch は Kubernetes クラスターと同じ VPC 内にある必要があります。 このパラメーターを設定する場合、 vSwitch の ID を照会するには、VPC コンソールにログインしてください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip | イントラネット SLB インスタンスの 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: nginxSLB インスタンスへの追加タグの付与
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
説明 | 対応する CCM バージョン |
付与するタグのリスト。複数のタグはカンマ(,)で区切ります。例: 重要 サービスにこのアノテーションを追加して追加タグを指定した場合、対応する SLB インスタンスのタグをコンソールで後から変更すると、その変更が上書きされる可能性があります。 | 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 SLB インスタンスの作成
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
説明 | 対応する CCM バージョン |
SLB インスタンスの 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: LoadBalancerSLB インスタンスの削除保護の有効化
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
説明 | 対応する CCM バージョン |
SLB インスタンスの削除保護。有効値:
デフォルト値: 重要 LoadBalancer サービスのために作成された SLB インスタンスの場合、CLB コンソールで手動で削除保護を有効化しても、 | 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: LoadBalancerSLB インスタンスの設定変更保護の有効化
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
説明 | 対応する CCM バージョン |
SLB インスタンスの設定変更保護モード。有効値:
デフォルト値: | 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: LoadBalancerSLB インスタンスの名前の指定
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | 対応する CCM バージョン |
SLB インスタンスの名前。名前は 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: LoadBalancerSLB インスタンスのリソースグループの指定
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | 対応する CCM バージョン |
SLB インスタンスが属するリソースグループの ID。リソースグループ ID は指定後に変更できません。リソースグループ ID は、Alibaba Cloud 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 10sLCU 課金の SLB インスタンスの作成
アノテーション: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サービス削除時に自動作成された SLB インスタンスを保持する
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete
説明 | 対応する CCM バージョン |
LoadBalancer サービスを削除すると、そのサービスのために作成された CLB インスタンスが保持され、CLB インスタンスから この機能を有効化すると、サービス同期中に 有効値:
重要 この操作は、サービスの種類を変更するのではなく、サービスを削除することによって実行してください。そうしないと、サービスが誤って以前に保持された CLB インスタンスと再関連付けされる可能性があります。 | v2.10.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
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 リスナーにのみ適用されます。SLB インスタンスで複数の 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: LoadBalancerHTTP および HTTPS リスナーのセッション維持の設定(クッキーの挿入)
アノテーション:以下の表に示す複数のアノテーションが利用可能です。クッキーの挿入を行う場合、以下の 4 つのアノテーションは必須です。
この機能は、HTTP または HTTPS を使用する SLB インスタンスでのみサポートされます。
複数の 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 | クッキータイムアウト期間。このパラメーターは、 詳細については、「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: LoadBalancerSLB インスタンスのアクセス制御ポリシーグループの構成
アノテーション:以下の表に示す複数のアノテーションが利用可能です。以下の 3 つのアノテーションは必須です。
このアノテーションを使用してアクセス制御付きの SLB インスタンスを作成する前に、まずClassic Load Balancer(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: LoadBalancerSLB インスタンスのリダイレクトポートの指定
ポート転送は、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: LoadBalancerSLB インスタンスのスケジューリングアルゴリズムの設定
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
説明 | 対応する CCM バージョン |
スケジューリングアルゴリズム。有効値:
デフォルト値: このパラメーターの有効値について詳しくは、対応するリスナー種別の 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 アドレスを使用してサービスにアクセスすると、トラフィックがクラスター内で短絡される可能性があり、アクセスの問題が発生することがあります。トラフィックを CLB を経由させるには、「サービスのホスト名の設定」で説明されているアノテーションを追加してください。詳細については、「クラスター内から LoadBalancer サービスの外部 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 リスナーの作成
アノテーション:以下の表に示す複数のアノテーションが利用可能です。
HTTPS 要求は CLB レイヤーで復号化され、その後 HTTP 要求としてバックエンドの Pod に送信されます。
ヘルスチェック:HTTPS リスナーではヘルスチェックがデフォルトで無効になっています。バックエンドサービスの可用性を確保するため、リスナーポートに対して HTTP または TCP のヘルスチェックを設定することを推奨します。
クラスター内アクセス:クラスター内で CLB IP アドレスを使用してサービスにアクセスすると、トラフィックがクラスター内で短絡される可能性があり、アクセスの問題が発生することがあります。トラフィックを CLB を経由させるには、「サービスのホスト名の設定」で説明されているアノテーションを追加してください。詳細については、「クラスター内から LoadBalancer サービスの外部 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: LoadBalancerHTTPS リスナーの追加ドメイン証明書の設定
アノテーション:以下の表に示す複数のアノテーションが利用可能です。
アノテーション | 説明 | 対応する 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 | 追加ドメイン名および証明書 ID を指定します。形式は 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 ヘルスチェックに適用されます。バックエンド 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 | 連続する 2 回のヘルスチェックの間隔。単位:秒。有効値:[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 | ヘルスチェック応答のタイムアウト期間。このパラメーターは TCP ヘルスチェックに適用されます。バックエンド ECS インスタンスが指定されたタイムアウト期間内に応答しない場合、ヘルスチェックは失敗します。単位:秒。有効値:[1, 300]。
| v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | ヘルスチェックステータスを fail から success に変更するために必要な、連続した成功したヘルスチェックの回数。 有効値:[2, 10]。デフォルト値:3。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | ヘルスチェックステータスを success から fail に変更するために必要な、連続した失敗したヘルスチェックの回数。有効値:[2, 10]。デフォルト値:3。詳細については、「CreateLoadBalancerUDPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | 連続する 2 回のヘルスチェックの間隔。単位:秒。有効値:[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。TCP ヘルスチェックではこのアノテーションを設定する必要はありません。 | 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 | ヘルスチェック応答のタイムアウト期間。このパラメーターは HTTP ヘルスチェックに適用されます。バックエンド ECS インスタンスが指定されたタイムアウト期間内に応答しない場合、ヘルスチェックは失敗します。 単位:秒。有効値:[1, 300]。 「 詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | ヘルスチェックステータスを fail から success に変更するために必要な、連続した成功したヘルスチェックの回数。 有効値:[2, 10]。デフォルト値:3。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | ヘルスチェックステータスを success から fail に変更するために必要な、連続した失敗したヘルスチェックの回数。有効値:[2, 10]。デフォルト値:3。詳細については、「CreateLoadBalancerHTTPListener」をご参照ください。 | v1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | 連続する 2 回のヘルスチェックの間隔。単位:秒。有効値:[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 ヘッダーを使用して CLB インスタンスのリスナープロトコルを取得するかどうかを指定します。有効値:
デフォルト値: | v2.1.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport | X-Forwarded-For-SLBPORT ヘッダーを使用して SLB インスタンスのリスナーポートを取得するかどうかを指定します。有効値:
デフォルト値: | v2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport | X-Forwarded-For-ClientSrcPort ヘッダーを使用して SLB インスタンスにアクセスするクライアントのポートを取得するかどうかを指定します。有効値:
デフォルト値: | 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 バックエンドサーバーがタイムアウト期間内に応答しない場合、SLB インスタンスは待機を中止し、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。 CLB コンソールにログインし、証明書管理 ページで証明書 ID を確認してください。 説明 証明書を作成するには、「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 クラスターのアップグレード」をご参照ください。
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
クラスター内で CLB インスタンスの IP アドレスを使用してサービスにアクセスすると、トラフィックがクラスター内で遮断され、アクセス例外が発生する可能性があります。トラフィックを CLB インスタンス経由で強制的にルーティングさせるには、アノテーションを追加してください。詳細については、「サービスのホスト名の設定」および「クラスター内から LoadBalancer サービスの外部 IP アドレスにアクセスする際の注意点」をご参照ください。
説明 | 対応する CCM バージョン |
TCP および UDP リスナーの Proxy Protocol を構成します。Proxy Protocol を構成すると、クライアントのソース IP アドレスをバックエンドサーバーに伝達できます。有効値:
デフォルト値: 重要 この機能はスムーズなオンライン移行をサポートしていません。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: LoadBalancerCLB インスタンスのバックエンドからunschedulableノードを除外
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
説明 | 対応する CCM バージョン |
CLB インスタンスのバックエンドから SchedulingDisabled ノードを除外します。有効値:
デフォルト値: | 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 を CLB インスタンスのバックエンドに直接アタッチ
アノテーション: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 インスタンスを再利用する場合にのみ有効です。使用例については、「SLB インスタンスの再利用によるマルチクラスターサービス展開」をご参照ください。
トラフィックを受信するサービスの重みの設定
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
複数のサービスが同一の CLB インスタンスを再利用する場合、このアノテーションを使用して、現在のサービスがトラフィックを受信する際の重みを設定できます。このアノテーションは、既存の vServer グループを再利用する場合にのみ有効です。使用例については、「SLB インスタンスの再利用によるマルチクラスターサービス展開」をご参照ください。
バックエンドサーバーの重み更新を無視
アノテーション:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
説明 | 対応する CCM バージョン |
サービス同期中に vServer グループのバックエンドサーバーの重みを更新しないようにスキップします。この設定は、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