さまざまな負荷分散機能を使用するために、ServiceのYAMLファイルに注釈を追加して、クラシックロードバランサー(CLB)インスタンス、リスナー、およびバックエンドサーバーグループを設定できます。
目次
カテゴリ | ハイパーリンク |
注釈の使用上の注意
注釈の値は大文字と小文字が区別されます。
アノテーションを使用する前に、この機能でサポートされているクラウドコントローラーマネージャー(CCM)コンポーネントのバージョンを確認してください。CCMコンポーネントの更新方法の詳細については、コンポーネントの管理を参照してください。CCMコンポーネントのリリースノートの詳細については、クラウドコントローラーマネージャーを参照してください。
2019年9月11日から、
alicloud
キーワードはannotations
でalibaba-cloud
に変更されました。例:
変更前:
service.beta.kubernetes.io/alicloud-loadbalancer-id
変更後:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
システムは、
alicloud
キーワードを使用する注釈を引き続きサポートします。 既存の注釈を変更する必要はありません。
CLBインスタンスを管理するための一般的な操作
インターネット向けCLBインスタンスを作成する
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
内部向けCLBインスタンスを作成する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
説明 | デフォルト値 | サポートされているCCMバージョン |
内部向けCLBインスタンスを作成します。 有効な値:
| internet | CCM 1.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
指定した仕様を使用するCLBインスタンスを作成する
次の注釈が使用されます。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | CLBインスタンスの課金方式。 有効な値:
| paybytraffic | CCM 1.9.3以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | CLBインスタンスの仕様。 詳細については、CreateLoadBalancerを参照してください。 この注釈を使用して、指定した仕様を使用するCLBインスタンスを作成したり、CLBインスタンスの仕様を更新したりできます。 重要 CLBコンソールを使用してCLBインスタンスの仕様を更新すると、CCMがCLBインスタンスを元の仕様に復元する場合があります。 注意して進めてください。 CLBコンソールを使用して、仕様課金方式を使用するCLBインスタンスの仕様のみを変更できます。 | slb.s1.small | CCM 1.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
既存のCLBインスタンスを使用する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
説明 | デフォルト値 | サポートされているCCMバージョン |
使用したいCLBインスタンスのID。 この注釈を使用して、既存のCLBインスタンスを指定できます。
| デフォルト値なし | CCM 1.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
既存のCLBインスタンスを使用し、CLBインスタンスのリスナーを強制的に上書きする
次の注釈が使用されます。 次の注釈を使用して、CLBインスタンスのリスナーを強制的に上書きします。 リスナーポートの競合が発生した場合、元のリスナーは削除されます。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | 使用したいCLBインスタンスのID。 この注釈を使用して、既存のCLBインスタンスを指定できます。
| ||
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | 既存のCLBインスタンスのリスナーを上書きするかどうかを指定します。 有効な値:
重要 既存のCLBインスタンスを使用し、 | "false" | CCM 1.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インスタンスを作成するときにプライマリゾーンとセカンダリゾーンを指定する
次の注釈が使用されます。 CLBインスタンスのプライマリゾーンとセカンダリゾーンを指定した後、ゾーンを変更することはできません。
一部のリージョンのCLBインスタンスは、プライマリゾーンとセカンダリゾーンをサポートしていません。 CLBインスタンスの作成ページの実際的信息が優先されます。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid | プライマリバックエンドサーバーがデプロイされているゾーンのID。 | デフォルト値なし | CCM 1.9.3.10-gfb99107-aliyun以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid | セカンダリバックエンドサーバーがデプロイされているゾーンのID。 | デフォルト値なし | CCM 1.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
帯域幅課金CLBインスタンスを作成する
次の注釈が使用されます。 両方の注釈が必要です。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | CLBインスタンスの課金方式。 有効な値:
| paybytraffic | CCM 1.9.3以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth | CLBインスタンスの最大帯域幅。 この注釈は、インターネット向けCLBインスタンスにのみ適用されます。 インターネット向けCLBインスタンスの課金方式の制限の詳細については、ModifyLoadBalancerInstanceSpecを参照してください。 | 50 | CCM 1.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
CLBインスタンスにvSwitchを指定する
次の注釈が使用されます。 両方の注釈が必要です。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | 内部向けCLBインスタンスを作成するには、値をintranetに設定します。 有効な値:
| internet | CCM 1.9.3以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | CLBインスタンスが存在するvSwitchのID。 vSwitchとクラスターは、同じ仮想プライベートクラウド(VPC)にデプロイする必要があります。 この注釈を使用する場合は、 VPCコンソールにログインして、vSwitch IDを照会できます。 | デフォルト値なし | CCM 1.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
内部向けCLBインスタンスのIPアドレスを指定する
次の注釈が使用されます。 これらの注釈が必要です。
注釈 | 説明 | デフォルト値 | サポートされているCCMバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | 内部向けCLBインスタンスを作成するには、値をintranetに設定します。 有効な値:
| internet | CCM 1.9.3以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | CLBインスタンスが存在するvSwitchのID。 vSwitchとクラスターは同じVPCにデプロイする必要があります。 この注釈を使用する場合は、 VPCコンソールにログインして、vSwitch IDを照会できます。 | デフォルト値なし | CCM 1.9.3以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip | 内部向けCLBインスタンスのIPアドレス。
| デフォルト値なし | CCM 2.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
CLBインスタンスに追加タグを追加する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
説明 | デフォルト値 | サポートされているCCMバージョン |
CLBインスタンスに追加するタグ。 複数のタグはカンマ(,)で区切ります。 例: | デフォルト値なし | CCM 1.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: LoadBalancer
IPv6 CLBインスタンスの作成
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
説明 | 既定値 | サポートされているCCMバージョン |
CLBインスタンスのIPバージョン。指定後はIPバージョンを変更できません。この注釈を使用するには、クラスターのkube-proxyモードがIPVSに設定されていることを確認してください。有効な値:
| ipv4 | CCM 1.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
CLBインスタンスの削除保護を有効にする
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
説明 | デフォルト値 | サポートされているCCMバージョン |
CLBインスタンスの削除保護を有効にするかどうかを指定します。有効な値:
重要 LoadBalancerサービス用に作成されたCLBインスタンスに対して、CLBコンソールで手動で削除保護を有効にした場合、 | on | CCM 1.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
CLBインスタンスの設定読み取り専用モードを有効にする
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
説明 | 既定値 | サポートされているCCMバージョン |
CLBインスタンスの設定読み取り専用モードを有効にするかどうかを指定します。有効な値:
| ConsoleProtection | CCM 1.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
CLBインスタンスの名前を指定する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
説明 | 既定値 | サポートされているCCMバージョン |
CLBインスタンスの名前。名前は2~128文字で、文字、数字、ピリオド(.)、アンダースコア(_)、ハイフン(-)を使用できます。名前は文字で始める必要があります。 | 既定値なし | CCM 1.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
CLBインスタンスが属するリソースグループを指定する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
説明 | デフォルト値 | サポートされているCCMバージョン |
CLBインスタンスが属するリソースグループのID。リソースグループは、指定した後は変更できません。 リソース管理コンソール にログインして、リソースグループIDを照会できます。 | デフォルト値なし | CCM 1.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 | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname | サービスのホスト名を指定します。ホスト名は、ドメイン名の命名規則に準拠している必要があります。 以下の点に注意してください。
| デフォルト値なし | CCM 2.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
LCU課金方式のCLBインスタンスを作成する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
説明 | デフォルト値 | サポートされているCCMバージョン |
CLBインスタンスの課金方式。有効な値:
重要 LCU課金方式のCLBインスタンスの仕様を変更することはできません。 | PayBySpec | CCM 2.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 ベースの CLB インスタンスのセッション持続期間を指定する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout
説明 | デフォルト値 | サポートされている CCM バージョン |
セッション持続期間。単位: 秒。この注釈は、TCP リスナーにのみ適用されます。CLB インスタンスに複数の TCP リスナーがある場合、設定はすべての TCP リスナーに適用されます。 単位: 秒。有効な値: 0 ~ 3600。デフォルト値: 0。デフォルトでは、セッション持続は無効になっています。詳細については、CreateLoadBalancerTCPListener を参照してください。 | 0 | CCM 1.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 を挿入して HTTP または HTTPS リスナーのセッション持続を有効にする
次の注釈が使用されます。Cookie を挿入してセッション持続を有効にする場合は、次の注釈が必要です。
次の注釈は、HTTP ベースおよび HTTPS ベースの CLB インスタンスにのみ適用されます。
CLB インスタンスに複数の HTTP または HTTPS リスナーがある場合、設定はすべての HTTP または HTTPS リスナーに適用されます。
注釈 | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session | セッション持続を有効にするかどうかを指定します。この注釈は、HTTP および HTTPS リスナーにのみ適用されます。有効な値:
詳細については、CreateLoadBalancerHTTPListener および CreateLoadBalancerHTTPSListener を参照してください。 | off | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type | Cookie の処理に使用される方法。この注釈は、HTTP および HTTPS リスナーにのみ適用されます。注釈
詳細については、CreateLoadBalancerHTTPListener および CreateLoadBalancerHTTPSListener を参照してください。 | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout | Cookie のタイムアウト期間。この注釈は、 詳細については、CreateLoadBalancerHTTPListener および CreateLoadBalancerHTTPSListener を参照してください。 | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie | バックエンドサーバーで設定された Cookie の名前。 Cookie は 1 ~ 200 文字の長さで、ASCII 文字と数字のみを含めることができます。カンマ (,)、セミコロン (;)、またはスペース文字を含めることはできません。ドル記号 ($) で始めることはできません。 この注釈は、 詳細については、CreateLoadBalancerHTTPListener および CreateLoadBalancerHTTPSListener を参照してください。 | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.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
CLB インスタンスの ACL を構成する
次の注釈が使用されます。これらの注釈は必須です。
この注釈を使用してアクセス制御が構成された CLB インスタンスを作成する前に、CLB コンソール で ACL を作成し、ACL の ID を記録する必要があります。
注釈 | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status | アクセス制御を有効にするかどうかを指定します。有効な値:
| off | CCM 1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id | リスナーに関連付ける ACL の ID。 | デフォルト値なし | CCM 1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type | ACL のタイプ。有効な値:
| デフォルト値なし | CCM 1.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
CLB インスタンスのポート転送を構成する
ポート転送により、CLB インスタンスは HTTP ポートからのリクエストを HTTPS ポートに転送できます。
次の注釈が使用されます。これらの注釈は必須です。
注釈 | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | CLB インスタンスの証明書の ID。 CLB コンソール にログインし、証明書ページで証明書 ID を表示できます。 説明 証明書の作成方法の詳細については、Alibaba Cloud SSL 証明書サービスの証明書を使用する を参照してください。 | デフォルト値なし | CCM 1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port | HTTP ポートからのリクエストを指定された HTTPS ポートに転送します。例: | デフォルト値なし | CCM 1.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
CLB インスタンスのスケジューリングアルゴリズムを指定する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
説明 | デフォルト値 | サポートされている CCM バージョン |
スケジューリングアルゴリズム。有効な値:
| rr | CCM 1.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: LoadBalancer
UDP リスナーを作成する
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
HTTP リスナーを作成する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port
説明 | デフォルト値 | サポートされている CCM バージョン |
複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.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: LoadBalancer
HTTPS リスナーを作成する
次の注釈が使用されます。
CLB インスタンスの HTTPS リスナーは、HTTPS リクエストを HTTP リクエストに復号化し、リクエストをバックエンドサーバーの Pod に転送します。
注釈 | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | CLB インスタンスの証明書の ID。 CLB コンソール にログインし、証明書ページで証明書 ID を表示できます。 説明 証明書の作成方法の詳細については、Alibaba Cloud SSL 証明書サービスの証明書を使用する を参照してください。 | デフォルト値なし | CCM 1.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 | CCM 2.6.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックのタイプ。有効な値:
詳細については、CreateLoadBalancerTCPListener を参照してください。 | tcp | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェックのタイムアウト期間。この注釈は、TCP ヘルスチェックに適用されます。バックエンドサーバーが指定されたタイムアウト期間内にヘルスチェック応答を返さない場合、サーバーはヘルスチェックに失敗します。単位: 秒。有効な値: 1 ~ 300。
| 5 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
有効な値: 2 ~ 10。詳細については、CreateLoadBalancerTCPListener を参照してください。 | 3 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | 正常なバックエンドサーバーが異常と宣言されるまでに発生する必要がある、連続した失敗したヘルスチェックの数。有効な値: 2 ~ 10。詳細については、CreateLoadBalancerTCPListener を参照してください。 | 3 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックを実行する間隔。単位: 秒。有効な値: 1 ~ 50。詳細については、CreateLoadBalancerTCPListener を参照してください。 | 2 | CCM 1.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: LoadBalancer
UDP ヘルスチェックを有効にする
次の注釈が使用されます。これらの注釈は必須です。
デフォルトでは、UDP ポートのヘルスチェックは有効になっています。
注釈 | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch | TCP または UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効な値:
| on | CCM 2.6.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | ヘルスチェックのタイムアウト期間。この注釈は、TCP ヘルスチェックに適用されます。バックエンドサーバーが指定されたタイムアウト期間内にヘルスチェック応答を返さない場合、サーバーはヘルスチェックに失敗します。単位: 秒。有効な値: 1 ~ 300。
| 5 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | 異常なバックエンドサーバーが正常と宣言されるまでに発生する必要がある、連続した正常なヘルスチェックの数。 有効な値: 2 ~ 10。詳細については、CreateLoadBalancerUDPListener を参照してください。 | 3 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | 正常なバックエンドサーバーが異常と宣言されるまでに発生する必要がある、連続した失敗したヘルスチェックの数。有効な値: 2 ~ 10。詳細については、CreateLoadBalancerUDPListener を参照してください。 | 3 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックを実行する間隔。単位: 秒。有効な値: 1 ~ 50。詳細については、CreateLoadBalancerUDPListener を参照してください。 | 2 | CCM 1.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: LoadBalancer
TCP または UDP リスナーのヘルスチェックを無効にする
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch
説明 | デフォルト値 | サポートされている CCM バージョン |
TCP または UDP リスナーのヘルスチェックを有効にするかどうかを指定します。有効な値:
| on | CCM 2.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: LoadBalancer
HTTP ヘルスチェックを有効にする
次の注釈が使用されます。
注釈 | 説明 | デフォルト値 | サポートされている CCM バージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | 有効な値:
| off | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | ヘルスチェックのタイプ。有効な値:
詳細については、CreateLoadBalancerHTTPListener を参照してください。 | tcp | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | ヘルスチェックに使用する URI (Uniform Resource Identifier)。ヘルスチェックのタイプが TCP に設定されている場合、この注釈は不要です。 | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode | ヘルスチェックが成功した場合に返される HTTP ステータスコード。複数の HTTP ステータスコードをカンマ (,) で区切ります。有効な値:
詳細については、CreateLoadBalancerHTTPListener を参照してください。 | http_2xx | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | ヘルスチェックに使用するドメイン名。有効な値:
詳細については、CreateLoadBalancerHTTPListener を参照してください。 | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout | ヘルスチェックのタイムアウト期間。この注釈は、HTTP ヘルスチェックに適用されます。バックエンドサーバーが指定されたタイムアウト期間内にヘルスチェック応答を返さない場合、サーバーはヘルスチェックに失敗します。 単位: 秒。有効な値: 1 ~ 300。
詳細については、CreateLoadBalancerHTTPListener を参照してください。 | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | 異常なバックエンドサーバーが正常と宣言されるまでに発生する必要がある、連続した正常なヘルスチェックの数。 有効な値: 2 ~ 10。詳細については、CreateLoadBalancerHTTPListener を参照してください。 | 3 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | 正常なバックエンドサーバーが異常と宣言されるまでに発生する必要がある、連続した失敗したヘルスチェックの数。有効な値: 2 ~ 10。詳細については、CreateLoadBalancerHTTPListener を参照してください。 | 3 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | ヘルスチェックを実行する間隔。単位: 秒。有効な値: 1 ~ 50。詳細については、CreateLoadBalancerHTTPListener を参照してください。 | 2 | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method | HTTP リスナーが使用するヘルスチェックメソッド。有効な値:
| デフォルト値なし | CCM 2.3.0 以降 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on" # HTTPヘルスチェックを有効にする
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 | 接続ドレイニングを有効にするかどうかを指定します。有効な値:
| デフォルト値なし | CCM 2.0.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout | 接続ドレイニングのタイムアウト期間。単位: 秒。有効な値: 10 ~ 900。 | デフォルト値なし | CCM 2.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 | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto | X-Forwarded-Proto ヘッダーを使用して CLB インスタンスのリスナー プロトコルを取得するかどうかを指定します。有効な値:
| off | CCM 2.1.0 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport | XForwardedFor_SLBPORT ヘッダーを使用して CLB インスタンスのリスナー ポートを取得するかどうかを指定します。有効な値:
| off | CCM 2.9.1 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport | XForwardedFor_ClientSrcPort ヘッダーを使用して CLB インスタンスのリスナー ポートを取得するかどうかを指定します。有効な値:
| off | CCM 2.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 | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout | リスナーのアイドル接続のタイムアウト期間を指定します。単位: 秒。有効な値: 1 ~ 60。 | 15 | CCM 2.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 | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | CLB インスタンスの証明書の ID。 CLB コンソール にログインし、証明書ページで証明書 ID を表示できます。 説明 証明書の作成方法の詳細については、Alibaba Cloud SSL 証明書サービスの証明書を使用する を参照してください。 | デフォルト値なし | CCM 1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled | HTTP/2 を有効にするかどうかを指定します。有効な値:
| on | CCM 2.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" # HTTP/2を無効にする
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 | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout | リクエストのタイムアウト期間。単位: 秒。有効な値: 1 ~ 180。 バックエンドサーバーがタイムアウト期間内に応答に失敗した場合、CLB インスタンスは待機を停止し、クライアントに HTTP 504 エラーコードを返します。 | 60 | CCM 2.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 を参照してください。 | デフォルト値なし | CCM 2.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 | 複数の値をカンマ (,) で区切ります。例: | デフォルト値なし | CCM 1.9.3 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | CLB インスタンスの証明書の ID。 CLB コンソール にログインし、証明書ページで証明書 ID を表示できます。 説明 証明書の作成方法の詳細については、Alibaba Cloud SSL 証明書サービスの証明書を使用する を参照してください。 | デフォルト値なし | CCM 1.9.3.164-g2105d2e-aliyun 以降 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | TLS セキュリティポリシー。各セキュリティポリシーには、HTTPS で使用可能な TLS プロトコルバージョンと暗号スイートが含まれています。詳細については、CreateLoadBalancerHTTPSListener を参照してください。有効な値:
| tls_cipher_policy_1_0 | CCM 2.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 1.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: LoadBalancer
TCP および UDP リスナーのプロキシプロトコルを構成する
注釈: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
説明 | デフォルト値 | サポートされている CCM バージョン |
TCP または UDP リスナーのプロキシプロトコルを有効にするかどうかを指定します。プロキシプロトコルが構成されると、クライアントの IP アドレスをバックエンドサーバーに渡すことができます。有効な値:
重要 この機能を有効にすると、サービスが中断される可能性があります。プロキシプロトコルを有効にする前に、アプリケーションを停止して更新する必要があります。注意して進めてください。 | off | CCM 2.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