Alibaba Cloud Server Load Balancer (SLB) を使用して各種のサービスにアクセスできます。
このタスクについて
ご利用中のクラスターにバージョン 1.9.3 以降の Cloud Controller Manager (CCM) を使用して作成した既存の SLB インスタンスを指定した場合、SLB
インスタンス用のリスナーが設定されません。 SLB インスタンス用のリスナーを設定するには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
を設定します。 SLB インスタンス用のリスナーは、手作業で設定することもできます。
root@master # kubectl get pod -n kube-system -o yaml|grep image:|grep cloud-con|uniq
image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/cloud-controller-manager-amd64:v1.9.3
注意事項
- サービスのタイプが
LoadBalancer
の場合、CCM はサービスの SLB インスタンス ( SLB インスタンス、リスナー、および VServer グループなどのリソースを含む) を作成または設定します。 - サービスのタイプが LoadBalancer 以外の場合、CCM はサービスの SLB インスタンスを設定しません。 サービスのタイプ設定を
Type = LoadBalancer
からType! = LoadBalancer
に変更した場合、CCM はサービスに対して作成された SLB インスタンスを削除します。 SLB インスタンスがservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
アノテーションで指定された既存の SLB インスタンスである場合、CCM は SLB インスタンスを削除しません。 - 自動設定更新:CCM は宣言型 API を使用し、特定条件下のサービス設定に従って SLB インスタンスの設定を自動的に更新します。 SLB コンソールで SLB インスタンスの設定を変更した場合、CCM が設定を更新した際に変更が上書きされる場合があります。 お客様によって指定された既存の SLB インスタンスで、かつ service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners アノテーションが false に指定されている場合、設定変更は上書きされません。 CCM によって作成され、保守されている SLB インスタンスは設定を変更しないでください。
- サービスに既存の SLB インスタンスを指定するか、または CCM でサービスの SLB を作成します。 それぞれの方法で指定または作成された SLB インスタンスは、異なった方法で管理されます。
既存の SLB インスタンス
- サービスに
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
アノテーションを設定します。 - SLB インスタンスの設定:CCM はこの SLB インスタンスを使用し、他のアノテーションに基づいて設定します。 CCM は、この SLB インスタンスに対して複数の VServer グループを作成します。 クラスターのノードが変更された場合、CCM は変更に応じて VServer グループのノードを更新します。
- リスナーの設定:CCM は、
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners
アノテーションの設定に応じて SLB インスタンスのリスナーを設定します。 アノテーションが false に設定されている場合、CCM は SLB インスタンスのリスナーを設定しません。 アノテーションが true に設定されている場合、CCM は SLB インスタンスのリスナーの更新を試みます。 CCM は、SLB インスタンスのリスナーの名前に基づいて、Kubernetes によって管理されているリスナーかどうかを確認します。 名前の形式が k8s/Port/ServiceName/Namespace/ClusterID の場合、リスナーは Kubernetes によって管理されています。 サービスによって宣言されたリスニングポートが既存のリスニングポートと競合する場合、CCM はエラーを報告します。 - SLB インスタンスの削除:サービスが削除されても、CCM は service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションで指定された既存の SLB インスタンスを削除しません。
- サービスに
- CCM によって管理される SLB インスタンス
- CCM はサービスの設定に基づいて SLB インスタンス、 リスナー 、および VServer グループのようなリソースを自動的に作成および設定できます。 これらのリソースはすべて、CCM によって管理されます。 これらのリソースの設定を、SLB コンソールから手作業で変更しないでください。 設定が変更された場合、CCM は次回の調整時にサービスによって宣言された設定に復元するため、予期せぬ結果を引き起こします。
- SLB インスタンスの削除:サービスが削除されると、CCM は SLB インスタンスを削除します。
- バックエンドサーバーの更新
- CCM は、サービスの SLBインスタンスのバックエンド VServer グループを自動的に更新します。 サービスのバックエンドエンドポイントが変更されるか、クラスター内のノードが変更されると、CCM は変更に応じてバックエンドサーバーを更新します。
- サービスのクラスターに
spec.externalTrafficPolicy
が設定されている場合、CCM はクラスターのすべてのノードを SLB インスタンスのバックエンドサーバーとして追加します。 ただし、バックエンドサーバーがバックエンドラベルによってサービスに指定されている場合はこの限りではありません。 Elastic Computing Service (ECS) インスタンスにアタッチできる SLB インスタンスの数には上限があります。 前述の方法でバックエンドサーバーが追加された場合、アタッチされた SLB インスタンスの数が短時間に増加します。 上限に達した場合、サービスの調整は失敗します。 この問題を解決するには、サービスの spec.ExternalTrafficPoilcy を Local に設定します。 - サービスの
spec.externalTrafficPoilcy
が Local に設定されている場合、CCM は、サービスに対応するポッドがバックエンドサーバーとして配置されているノードのみ SLB インスタンスに追加します。 この方法で、アタッチされたインスタンスの数が増加する期間を延長できます。 また、このモードでは、レイヤー 4 の送信元 IP アドレスを保持できます。 - いかなる状況においても、CCM がクラスターのマスターノードをバックエンドサーバーとして SLB インスタンスに追加することはありません。
- kubectl drain または kubectl cordon コマンドによっててノードが空になるか、Unschedulable とマークされた場合、CCM は
SLB インスタンスからノードをバックエンドサーバーとして削除します。 ノードを削除するには、
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
を On に設定します。注 v1.9.3.164-g2105d2e-aliyun より前のバージョンでは、CCM は SLB バックエンドからスケジュールされていないノードを削除します。
コマンドラインの使用
使用方法 1:
使用方法 2:
Kubernetes ダッシュボードの使用
Container Service コンソールの使用
参考資料
Alibaba Cloud SLBは、ヘルスチェック、課金方法、SLB インスタンスタイプなど、さまざまなパラメーターをサポートしています。 詳細については、SLB 設定パラメーターをご参照ください。
注意事項
Alibaba Cloud では、 アノテーション
を指定することで SLB 機能を使用できます。
- パブリック SLB インスタンスの作成
apiVersion: v1 kind: Service metadata: name: nginx namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- 内部 SLB インスタンスを作成する
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
- HTTP タイプ SLB インスタンスの作成
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 タイプ SLB インスタンスの作成
Alibaba Cloud コンソールで証明書を作成し、証明書 ID を登録します。 次に、必要なアノテーションを指定して、HTTPS タイプの SLB インスタンスを作成します。
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: 443 selector: run: nginx type: LoadBalancer
- SLB インスタンスの 帯域幅の制限
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "100" name: nginx namespace: default spec: ポート: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- SLB インスタンスタイプの指定
SLB インスタンスの仕様の詳細については、「CreateLoadBalancer」をご参照ください。
apiVersion: v1 kind: Service metadata: annotations: 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 インスタンスの使用
- デフォルトでは、既存の SLB インスタンスのリスナーは上書きされません。 既存の SLB のリスナーを強制的に上書きするには、
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners
を true に設定します。注 次の 2 つの理由により、既存の SLB インスタンスのリスナーはデフォルトでは上書きされません。- サービスが既存のリスナーにバインドされている場合、上書きを強制するとサービスが中断する可能性があります。
- CCM がサポートするバックエンドの設定に制限があるため、複雑な設定を処理できません。 複雑なバックエンド設定要件がある場合は、リスナーを上書きせずにコンソールでリスナーを設定できます。
- 現在、
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
アノテーションを使用して既存の SLB インスタンスに追加のタグをアタッチすることはできません。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALACER_ID}" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- デフォルトでは、既存の SLB インスタンスのリスナーは上書きされません。 既存の SLB のリスナーを強制的に上書きするには、
- 既存の SLB インスタンスを使用し、SLB インスタンスのリスナーを強制的に上書きする
既存のリスナーを強制的に上書きします。 リスナーポートの競合が発生した場合、既存のリスナーが削除されます。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALACER_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: LoadBalancere: LoadBalancer
- バックエンドラベルを使用して、バックエンドサーバーとして使用するワーカーノードを指定する
複数入力する場合は、コンマ (,) で区切ります。 例:
"k1=v1,k2=v2"
ノードは、バックエンドサーバーとして追加される指定されたすべてのラベルを満たす必要があります。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: LoadBalancer
- TCP タイプの SLB インスタンスへのセッションタイムアウトの設定
service.beta.kubernetes.io/alicloud-loadbalancer-persistence-time
パラメーター は、 TCP リスナーにのみ適用されます。- SLB インスタンスに複数の TCP リスナーがある場合、設定はすべての TCP リスナーで有効になります。
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 タイプの SLB インスタンスのセッション永続性を設定する
- HTTP および HTTPS タイプの SLB インスタンスのみサポートされます。
- SLB インスタンスに複数の HTTP または HTTPS リスナーがある場合、設定はすべての HTTP または HTTPS リスナーに対して有効です。
- Cookieの挿入によるセッションの永続性を設定するには、次の例で指定されるすべてのアノテーションが必要です。
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
- サーバー側の Cookie による HTTP または HTTPS タイプの SLB インスタンスのセッション永続性を設定する
- HTTP および HTTPS タイプの SLB インスタンスのみサポートされます。
- SLB インスタンスに複数の HTTP または HTTPS リスナーがある場合、設定はすべての HTTP または HTTPS リスナーに対して有効です。
- サーバー側の Cookie によるセッションの永続性を設定するには、次の例で指定されるすべてのアノテーションが必要です。
- service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie アノテーションで指定された Cookie では、文字、数字、下線 (_)、ハイフン (-) のみ使用できます。
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: "server" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie: "${YOUR_COOKIE}" 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
- SLB インスタンスの作成時に、プライマリおよびセカンダリゾーンを指定する
- 一部のリージョン (ap-southeast-5 など) の SLB インスタンスは、プライマリゾーンとセカンダリゾーンをサポートしていません。
- 作成後にプライマリおよびセカンダリゾーンを変更することはできません。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "ap-southeast-5a" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "ap-southeast-5a" name: nginx namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- ポッドが配置されているノードをバックエンドサーバーとして使用する
デフォルトでは、 サービスのクラスターに
externalTrafficPolicy
が設定されます。 クラスターモードでは、クラスター内のすべてのノードがバックエンドサーバーとして使用されます。 サービスの externalTrafficPolicy を Localに設定すると、ポッドが配置されているノードのみバックエンドサーバーとして使用されます。apiVersion: v1 kind: Service metadata: name: nginx namespace: default spec: externalTrafficPolicy: Local ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- Virtual Private Cloud (VPC) ネットワークタイプの SLB インスタンスを作成する
- VPC ネットワークタイプの SLB インスタンスを作成するには、次の例で指定されているすべてのアノテーションが必要です。
- 内部 SLB インスタンスは、VPC およびクラシックネットワークタイプをサポートします。 詳細については、「SLB インスタンスの概要」をご参照ください.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alicloud-loadbalancer-address-type: "intranet" service.beta.kubernetes.io/alicloud-loadbalancer-slb-network-type name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- 帯域幅課金の SLB インスタンスを作成する
- パブリック SLB インスタンスのみ帯域幅課金をサポートします。
- 帯域幅課金の SLB インスタンスを作成するためには、次の例で指定されているすべてのアノテーションが必要です。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "45" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- ヘルスチェック機能が有効な SLB インスタンスを作成する
- ヘルスチェック機能が有効な TCP タイプの SLB インスタンスを作成する
- ヘルスチェック機能は、TCP リスナーではデフォルトで有効になっており、無効化することはできません。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag annotation
アノテーションは無効です。 - ヘルスチェック機能が有効な TCP タイプの SLB インスタンスを作成するには、次の例で指定されているすべてのアノテーションが必要です。
apiVersion: v1 kind: Service metadata: annotations: 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
- ヘルスチェック機能は、TCP リスナーではデフォルトで有効になっており、無効化することはできません。
- ヘルスチェック機能が有効な HTTP タイプの SLB インスタンスを作成する
ヘルスチェック機能が有効な HTTP タイプの SLB インスタンスを作成するには、次の例で指定されているすべてのアノテーションが必要です。
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/alicloud-loadbalancer-health-check-interval service.beta.kubernetes.io/alicloud-loadbalancer-protocol-port: "http:80" name: nginx namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- ヘルスチェック機能が有効な TCP タイプの SLB インスタンスを作成する
- SLB インスタンスのスケジューリングアルゴリズムを指定する
- wrr (デフォルト):重みの大きいバックエンドサーバーが、重みの小さいサーバーよりも多くのリクエストを受信します。
- wlc:各バックエンドサーバーの重みと負荷 (接続数)に基づいてリクエストが転送されます。 重みが同じである場合、接続数が少ないバックエンド RealServer が、接続数が多いバックエンド RealServer よりも多くのリクエストを受信します。
- rr:バックエンドサーバーに均等かつ順番にリクエストが転送されます。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wlc" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- アクセス制御機能が有効な SLB インスタンスの作成
- Alibaba Cloud コンソールでアクセス制御リスト (ACL) を作成し、ACL IDを記録します。 次に、必要なアノテーションを指定して、アクセス制御機能が有効な SLB インスタンスを作成します。
- ホワイトリストは、特定の IP アドレスからのアクセスのみを許可し、ブラックリストは特定の IP アドレスからのアクセスのみを制限します。
- アクセス制御機能が有効な SLB インスタンスを作成するには、次の例で指定されているすべてのアノテーションが必要です。
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
- SLB インスタンスの VSwitch を指定する
- Alibaba Cloud VPC コンソールで VSwitch の ID を検索します。 次に、必要なアノテーションを使用して、SLB インスタンスの VSwitch を指定します。
- SLB インスタンスの VSwitch を指定するには、次の例で指定されているすべてのアノテーションが必要です。
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 インスタンスのポート転送を設定する
- ポート転送により、SLB インスタンスはリクエストを HTTP ポートから HTTPS ポートに転送できるようになります。
- ポート転送を設定するには、Alibaba Cloud コンソールで証明書を作成し、証明書 ID を記録する必要があります。
- SLB インスタンスのポート転送を設定するには、次の例で指定されているすべてのアノテーションが必要です。
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: 443 - name: http port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- SLB インスタンスに追加のタグを添付する
複数のタグはコンマ (,) で区切ります (例:
"k1=v1,k2=v2"
)。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
- SLB バックエンドで Unschedulable 状態のノードを削除する
kubectl cordon
およびkubectl drain
コマンドは、ノードを Unscheduleable 状態に設定します。service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
のデフォルト値は "off" です。 unscheduleable 状態のノードは、SLB バックエンドサーバーグループから削除されません。 SLB インスタンスのバックエンドサーバーグループから Unscheduleable 状態のノードを削除するには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
を "on" に設定します。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: LoadBalancer
- SLB バックエンドサーバーにポッドをマウントする
アノテーション:
service.beta.kubernetes.io/backend-type
を "eni" に設定して、ポッドを Terway ENI ネットワークモードの SLB バックエンドサーバーにマウントできます。 この方法により、転送のパフォーマンスが向上します。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
- アノテーションの値は、大文字と小文字が区別されます。
- 2019 年 9 月 11 日から、アノテーションフィールドは alicloud から alibaba-cloud に更新されました。
例:
これまでの設定:
service.beta.kubernetes.io/alicloud-loadbalancer-id
今後の設定:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
システムは、alicloud の書き込み形式と互換性があります。 ユーザーがコードを変更する必要はありません。
アノテーション | データ型 | 説明 | デフォルト値 | サポートされているバージョン |
---|---|---|---|---|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | string | リスニングポートを設定します。 複数のポートを設定する場合はコンマ (,) で区切ります (例:https:443,http:80 )。
|
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | string | SLB インスタンス名を設定します。 設定可能な値は、internet または intranet です。 | internet | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slb-network-type | string | SLB インスタンスのネットワークタイプを設定します。 設定可能な値は、classic および vpc です。
ネットワークタイプを vpc に設定する場合、 |
classic | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | string | SLB インスタンスの課金方法を設定します。 設定な可能な値は、 paybytraffic または paybybandwidth です。 | paybytraffic | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | string | SLB インスタンスの ID を設定します。 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションを指定して、既存の SLB インスタンスを指定できます。 既存の SLB インスタンスを指定した場合、インスタンスのリスナーは上書きされません。 既存の SLB インスタンスのリスナーを強制的に上書きするには、 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners アノテーションを "true " に設定します。 | なし | V1.9.3.59-ge3bc999-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label | string | SLB インスタンスのバックエンドサーバーとして追加されるワーカーノードを指定するためのラベルを設定します。 | なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | string | SLB インスタンスの仕様を設定します。 詳細については、以下をご参照ください。CreateLoadBalancer | なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout | string | セッションの継続時間を設定します (単位:秒)。
このアノテーションは、TCP リスナーにのみ適用されます。 設定可能な値は、0 から 3600 です。 デフォルト値は 0 です (セッションを維持しないことを示します)。 詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
0 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session | string | セッションの継続時間を適用するかどうかを設定します。 設定可能な値は、on または off です。
注 HTTP および HTTPS リスナーにのみ適用されます。
詳細については、以下をご参照ください。 CreateLoadBalancerHTTPListener およびCreateLoadBalancerHTTPSListener |
off | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type | string | Cookie の処理方法を設定します。 設定可能な値は以下のとおりです。
注
詳細については、以下をご参照ください。CreateLoadBalancerHTTPListener およびCreateLoadBalancerHTTPSListener |
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout | string | Cookie のタイムアウト期間を設定します (単位:秒)。 設定可能な値は 1 から 86,400 です。
注 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session アノテーションが "on" に、かつ service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type アノテーションが "insert" に設定されている場合、このアノテーションを指定する必要があります。
詳細については、以下をご参照ください。CreateLoadBalancerHTTPListener およびCreateLoadBalancerHTTPSListener |
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie | string | バックエンドサーバー上に設定する Cookie を設定しす。
名前の長さは 1 ~ 200 文字です。 ASCII 文字と数字のみ使用できます。 コンマ (,))、セミコロン (;)、またはスペースは使用できません。 ドル記号 ($) で始めることはできません。 注
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session アノテーションが "on" に、かつ service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type アノテーションが "server" に設定されている場合、このアノテーションを指定する必要があります。 詳細については、以下をご参照ください。CreateLoadBalancerHTTPListener およびCreateLoadBalancerHTTPSListener |
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid | string | バックエンドサーバーのプライマリゾーンの ID を設定します。 | なし | V1.9.3.10-gfb99107-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid | string | バックエンドサーバーのセカンダリゾーンの ID を設定します。 | なし | V1.9.3.10-gfb99107-aliyun 以降のバージョン |
externalTrafficPolicy | string | ノードをバックエンドサーバーとして追加するためのポリシーを設定します。 設定可能な値は以下のとおりです。
|
cluster | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | string | 指定された既存の SLB インスタンスのリスナーを上書きするかどうかを指定します。 | false:既存の SLB インスタンスのリスナーは上書きされません。 | V1.9.3.59-ge3bc999-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth | string | SLB インスタンスの帯域幅を設定します。 このアノテーションは、パブリック SLB インスタンスにのみ適用されます。 | 50 | V1.9.3.10-gfb99107-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | string | Alibaba Cloud の証明書 ID を設定します。 まず、証明書のアップロードが必要です。 | なし | V1.9.3.164-g2105d2e-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | string | ヘルスチェック機能を有効にするかどうかを示します。 設定可能な値は on または off です。
|
off. TCP リスナーの場合、このアノテーションは不要です。 ヘルスチェック機能はデフォルトで有効になっており、無効にすることはできません。 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | string | ヘルスチェックのタイプを設定します。 設定可能な値は tcp または http です。
詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
tcp | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | string | ヘルスチェックに使用される URI を設定します。
注 ヘルスチェックのタイプが TCP に設定されている場合、このアノテーションは不要です。
詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | string | ヘルスチェックに使用されるポートを設定します。 設定可能な値は以下のとおりです。
詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | string | バックエンドサーバーが正常だと判定されるまでの連続したヘルスチェックの回数 (失敗から成功まで) を設定します。
設定可能な値は 1 から 100 です。 詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
3 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | string | バックエンドサーバーが異常と判定されるまでのヘルスチェックの連続した失敗回数 (成功から失敗まで) を設定します。 設定可能な値は以下のとおりです。
2 から 10 詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
3 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | string | 連続した 2 回のヘルスチェックの時間間隔を設定します (単位:秒)。
設定可能な値は、1 から 50 です 。 詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
2 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | string | ヘルスチェックに対する応答のタイムアウト期間を設定します (単位:秒)。 このアノテーションは、TCP ヘルスチェックに適用されます。 指定されたタイムアウト期間内にバックエンドサーバーが応答しない場合、サーバーはヘルスチェックに失敗します。
設定可能な値は、1 から 300 です。 注 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout
アノテーションの値が service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval アノテーションの値未満であった場合、 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout
アノテーションは無効として扱われます。 この場合、 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval アノテーションの値はタイムアウト期間として使用されます。
詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
5 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout | string | ヘルスチェックに対する応答のタイムアウト期間を設定します (単位:秒)。 このアノテーションは、HTTP ヘルスチェックに適用されます。 指定されたタイムアウト期間内にバックエンドサーバーが応答しない場合、サーバーはヘルスチェックに失敗します。
設定可能な値は、1 から 300 です。 注 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout アノテーションの値が service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval アノテーションの値未満の場合、 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout アノテーションは無効として扱われます。 この場合、 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval アノテーションはタイムアウト期間として使用されます。
詳細については、以下をご参照ください。CreateLoadBalancerTCPListener |
5 | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | string | ヘルスチェックに使用されるドメイン名を設定します。
|
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode | string | ヘルスチェックが正常であるかどうかを示す HTTP ステータスコードを設定します。 複数の HTTP ステータスを指定する場合、コードをコンマ (,) で区切ります。
設定可能な値は次のとおりです。
|
http_2xx | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler | string | スケジューリングのアルゴリズムを設定します。 設定可能な値は、wrr、wlc、および rr です。
|
wrr | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alicloud-loadbalancer-cert-id | string | アクセス制御機能を有効にするかどうかを選択します。 設定可能な値は、 "on" または "off" です。 | off | V1.9.3.164-g2105d2e-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id | string | リスナーがバインドされている ACL の ID を設定します。 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status アノテーションが "on" に設定されている場合は必須のアノテーションです。 | なし | v1.9.3.164-g2105d2e-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type | string | ACL のタイプを設定します。
設定可能な値は、"white" および "black" です。
|
なし | v1.9.3.164-g2105d2e-aliyun以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | string | SLB インスタンスが属する VSwitch の ID を設定します。 このアノテーションを設定するには、service.beta.kubernetes.io/alicloud-loadbalancer-address-type アノテーションをイントラネットに設定する必要があります。 | なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port | string | HTTP リクエストを指定された HTTPS ポートに転送するためのポート転送設定です。 例: 80:443 |
なし | V1.9.3.164-g2105d2e-aliyun 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags | string | SLB インスタンスにアタッチされるタグを設定します。 複数入力する場合は、コンマ (,) で区切ります。 例: "k1=v1,k2=v2" |
なし | V1.9.3 以降のバージョン |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend | string | SLB バックエンドサーバーから SchedulingDisabled ノードを削除します。 設定可能な値は、on または offです。 | off | V1.9.3.164-g2105d2e-aliyun 以降のバージョン |
service.beta.kubernetes.io/backend-type | string | アノテーションを "eni" に設定して、ポッドを Terway ENI ネットワークモードの SLB バックエンドサーバーにマウントできます。 この設定により、転送のパフォーマンスが向上します。
このパラメーターは、バックエンドポッドが仮想ノード上の eci ポッドである場合に設定する必要があります。 設定可能な値は、eni です。
|
なし | V1.9.3.164-g2105d2e-aliyun 以降のバージョン |