すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:Service の問題のトラブルシューティング

最終更新日:Jun 04, 2026

ACS クラスターにおける LoadBalancer Service の問題を診断・解決する方法について説明します。

背景情報

Type=LoadBalancer の Service を作成すると、ACS Cloud Controller Manager (CCM) が自動的に SLB インスタンス、リスナー、バックエンドサーバーグループなどの SLB リソースを作成および構成します。SLB の自動更新ポリシーの詳細については、「LoadBalancer Service の構成に関する注意事項」をご参照ください。

操作手順

CCM のバージョンが 1.9.3.276-g372aa98-aliyun 以降であることを確認してください。CCM の更新。CCM のリリースノート:Cloud Controller Manager

Service troubleshooting process

  1. 次のコマンドを実行して、SLB インスタンスに関連付けられた Service を検索します。

    kubectl get svc -A |grep -i LoadBalancer|grep ${XXX.XXX.XXX.XXX}  #XXX.XXX.XXX.XXX は SLB インスタンスの IP アドレスです。
  2. 次のコマンドを実行して、Service のエラーイベントを確認します。

    kubectl -n {your-namespace} describe svc {your-svc-name}
    重要

    エラーイベントが表示されない場合は、CCM のバージョンが 1.9.3.276-g372aa98-aliyun 以降であることを再度確認してください。CCM の更新

  3. 問題が解決しない場合は、ACS DingTalk サポートグループにお問い合わせください。

Service のエラーと対処方法

以下の表に、一般的な Service のエラーとその対処方法を示します。

エラーメッセージ

説明と対処方法

The loadbalancer does not support backend servers of eni type

共有リソース SLB インスタンスは ENI タイプのバックエンドサーバーをサポートしていません。

対処方法:ENI バックエンドサーバーを使用するには、Service に annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small" アノテーションを追加して、パフォーマンス専有型 SLB インスタンスを作成します。

重要

アノテーションがご利用の CCM バージョンと一致していることを確認してください。各バージョンでサポートされているアノテーションの一覧は、「Service の YAML ファイルにアノテーションを追加して CLB インスタンスを構成する」をご参照ください。

There are no available nodes for LoadBalancer

SLB インスタンスに関連付けられたバックエンドサーバーがありません。Pod が Service に関連付けられており、正常に実行されているか確認してください。

対処方法:

  • Service に関連付けられた Pod がない場合は、アプリケーションポッドを関連付けてください。

  • 関連付けられた Pod が正常に実行されていない場合は、トラブルシューティングを実施してください。Pod のトラブルシューティング

  • Pod が正常に実行されているにもかかわらずバックエンドサーバーが関連付けられていない場合は、Pod がマスターノード上にあるかどうかを確認してください。その場合は、ワーカーノードに移行します。それ以外の場合は、ACS DingTalk サポートグループにお問い合わせください。

  • alicloud: not able to find loadbalancer named [%s] in openapi, but it's defined in service.loaderbalancer.ingress. this may happen when you removed loadbalancerid annotation

  • alicloud: can not find loadbalancer, but it's defined in service

Service に関連付けられた SLB インスタンスが見つかりません。

対処方法:SLB コンソール にログインし、Service のリージョン内で EXTERNAL-IP を基に SLB インスタンスを検索します。

  1. SLB インスタンスが存在せず、かつ Service が不要な場合は、Service を削除します。

  2. SLB インスタンスが存在する場合は、以下の手順を実行します。

    1. SLB インスタンスが SLB コンソールで作成されたものである場合は、Service に service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションを追加します。サポートされているアノテーションの一覧は、「Service の YAML ファイルにアノテーションを追加して CLB インスタンスを構成する」をご参照ください。

    2. SLB インスタンスが CCM によって自動作成されたものである場合は、インスタンスに kubernetes.do.not.delete ラベルが付与されているか確認します。付与されていない場合は、このラベルを追加します。古いバージョンの CCM を使用している場合に SLB インスタンスの名前を変更する方法

ORDER.ARREARAGE Message: The account is arrearage.

ご利用のアカウントに支払い遅延があります。

PAY.INSUFFICIENT_BALANCE Message: Your account does not have enough balance.

アカウント残高が不足しています。

Status Code: 400 Code: Throttlingxxx

SLB の API 速度制限がトリガーされました。

対処方法:

  1. SLB コンソールのクォータ管理ページ にアクセスし、SLB リソースクォータが十分かどうかを確認します。

  2. 次のコマンドを実行して Service のエラーを確認します。エラーが発生している場合は、上記の表を用いてトラブルシューティングを実施します。

    kubectl -n {your-namespace} describe svc {your-svc-name}

Status Code: 400 Code: RspoolVipExist Message: there are vips associating with this vServer group.

vServer グループに関連付けられたリスナーを削除できません。

対処方法:

  1. Service のアノテーションに SLB インスタンス ID が含まれているか確認します。例:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: {your-slb-id}

    Service のアノテーションに SLB インスタンス ID が含まれている場合、SLB インスタンスは再利用されます。

  2. SLB コンソールにログインし、Service の port を使用してリスナーを削除します。SLB リスナーの削除方法については、「リスナーの転送ルールの管理」をご参照ください。

Status Code: 400 Code: NetworkConflict

再利用されたイントラネット SLB インスタンスとクラスターが同じ VPC にありません。

対処方法:SLB インスタンスとクラスターが同じ VPC にデプロイされていることを確認してください。

Status Code: 400 Code: VSwitchAvailableIpNotExist Message: The specified VSwitch has no available ip.

vSwitch に利用可能な IP アドレスがありません。

対処方法:同じ VPC 内の別の vSwitch を指定するために、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}" を使用します。

The specified Port must be between 1 and 65535.

ENI モードでは、targetPort フィールドが STRING 型の値をサポートしていません。

対処方法:Service の YAML ファイルで targetPort フィールドを INTEGER 値に設定するか、CCM をアップグレードします。CCM の更新

Status Code: 400 Code: ShareSlbHaltSales Message: The share instance has been discontinued.

古いバージョンの CCM では、デフォルトで共有リソース SLB インスタンスが作成されますが、このタイプのインスタンスは現在購入できません。

対処方法:CCM の更新

can not change ResourceGroupId once created

SLB インスタンス作成後にリソースグループを変更することはできません。

対処方法:Service から service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id:"rg-xxxx" アノテーションを削除します。

can not find eniid for ip x.x.x.x in vpc vpc-xxxx

VPC 内に指定された ENI の IP アドレスが見つかりません。

対処方法:service.beta.kubernetes.io/backend-type: eni アノテーションが Service に追加されているか確認します。アノテーションが追加されている場合は、クラスターのネットワークプラグインとして Flannel が使用されているか確認します。Flannel が使用されている場合は、Service からアノテーションを削除します。Flannel は ENI モードをサポートしていません。

  • The operation is not allowed because the instanceChargeType of loadbalancer is PayByCLCU.

  • User does not have permission modify InstanceChargeType to spec.

Service で使用されている SLB インスタンスの課金方法を従量課金からスペック課金に変更することはできません。

対処方法:

  • Service から service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec アノテーションを削除します。

  • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type が Service に追加されている場合は、その値を PayByCLCU に設定します。

SyncLoadBalancerFailed the loadbalancer xxx can not be reused, can not reuse loadbalancer created by kubernetes.

CCM によって作成された SLB インスタンスが再利用されています。

対処方法:

  1. 関連する Service の YAML ファイルを確認し、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーション内の SLB インスタンス ID を記録します。

  2. Service のステータスに基づいて問題をトラブルシューティングします。

    • Service が Pending 状態の場合は、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションの値を、CLB コンソール で手動作成した SLB インスタンスの ID に変更します。

    • Service が Pending 状態でない場合は、以下の操作を実行します。

      • SLB インスタンスの IP アドレスが Service の外部 IP アドレスと同じ場合は、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションを削除します。

      • SLB インスタンスの IP アドレスが Service の外部 IP アドレスと異なる場合は、CLB コンソール にログインし、クラスターが配置されているリージョンを選択して、Service の外部 IP に基づいて SLB インスタンスを検索します。その後、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションの値を、手動作成した SLB インスタンスの ID に変更します。対応する SLB インスタンスが見つからない場合は、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションの値を、SLB コンソールで手動作成した SLB インスタンスの ID に変更し、Service を再作成します。

alicloud: can not change LoadBalancer AddressType once created. delete and retry

SLB インスタンスの種類は作成後に変更できません。

対処方法:関連する Service を再作成します。

the loadbalancer lb-xxxxx can not be reused, service has been associated with ip [xxx.xxx.xxx.xxx], cannot be bound to ip [xxx.xxx.xxx.xxx]

すでに別の SLB インスタンスに関連付けられている Service に、SLB インスタンスを関連付けることはできません。

対処方法:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id アノテーションの値を変更することで、既存の SLB インスタンスを再利用することはできません。Service に関連付けられた SLB インスタンスを変更するには、Service を削除して再作成する必要があります。

トラブルシューティング

以下の表に、一般的なトラブルシューティングのシナリオとその対処方法を示します。

カテゴリ

問題

対処方法

SLB インスタンスへのアクセス時に発生する問題

SLB インスタンスがトラフィックを均等に分散しません。

SLB インスタンスがトラフィックを均等に分散しない

アプリケーションの更新中に SLB インスタンスにアクセスすると 503 エラーが発生します。

アプリケーションの更新中に SLB インスタンスにアクセスすると 503 エラーが発生する

クラスター内から SLB インスタンスにアクセスできません。

LoadBalancer Service に関連付けられた SLB インスタンスの IP アドレスにクラスター内からアクセスできない

クラスター外から SLB インスタンスにアクセスできません。

クラスター外から SLB インスタンスにアクセスできない

HTTPS ポートにリクエストを送信すると、The plain HTTP request was sent to HTTPS port エラーが発生します。

HTTPS ポートにリクエストを送信するとエラーが発生する

SLB 構成に関する問題

Service のアノテーションが有効になりません。

Service のアノテーションが有効にならない場合はどうすればよいですか?

SLB インスタンスの構成が変更されました。

SLB インスタンスの構成が変更されるのはなぜですか?

既存の SLB インスタンスを再利用できません。

複数の Service で既存の SLB インスタンスを再利用できないのはなぜですか?

既存の SLB インスタンスを再利用してもリスナーが作成されません。

既存の SLB インスタンスを再利用してもリスナーが作成されないのはなぜですか?

Service のエンドポイントが SLB インスタンスのバックエンドサーバーに指定されたものと異なります。

SLB インスタンスの vServer グループが更新されない場合はどうすればよいですか?

SLB 削除に関する問題

SLB インスタンスが削除されました。

SLB インスタンスはいつ自動的に削除されますか?

SLB インスタンスが Service と一緒に削除されません。

SLB インスタンスはいつ自動的に削除されますか?

SLB インスタンスがトラフィックを均等に分散しない

原因

SLB インスタンスのスケジューリングアルゴリズムが適切ではありません。

症状

SLB インスタンスのバックエンドサーバーにトラフィックが均等に分散されません。

対処方法

  • Service に長時間接続が確立されている場合は、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler:"wlc" アノテーションを追加して、SLB インスタンスのスケジューリングアルゴリズムを Weighted Least Connections (WLC) に設定します。

アプリケーションの更新中に SLB インスタンスにアクセスすると 503 エラーが発生する

原因

SLB リスナーに接続ドレインが設定されていないか、Pod にグレースフルシャットダウンが設定されていません。

症状

アプリケーションの更新中に SLB インスタンスにアクセスすると 503 エラーが発生します。

対処方法

  1. service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain アノテーションを追加して、SLB リスナーの接続ドレインを設定します。アノテーションの詳細については、「リスナーの一般的な操作」をご参照ください。

  2. Pod のネットワークモードに基づいて、preStop および readinessProbe パラメーターを Pod に設定します。

    • readinessProbe はコンテナがトラフィックを受け入れる準備ができているかをチェックします。readiness プローブに合格した後、Pod はエンドポイントに追加され、SLB インスタンスにアタッチされます。readinessProbe のプロービング間隔、遅延期間、異常しきい値を適切に設定してください。起動時間が長いアプリケーションでは、しきい値が短すぎると繰り返し再起動が発生する可能性があります。

    • preStop を、Pod が残りのリクエストを処理するために必要な時間に設定します。terminationGracePeriodSeconds は、preStop より少なくとも 30 秒長く設定します。

    Pod の構成例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: default
    spec:
      containers:
      - name: nginx
        image: nginx
        # Liveness probe
        livenessProbe:
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: 80
          timeoutSeconds: 1
        # Readiness probe
        readinessProbe:
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 30
          successThreshold: 1
          tcpSocket:
            port: 80
          timeoutSeconds: 1
        # Graceful shutdown
        lifecycle:
          preStop:
            exec:
              command:
              - sleep
              - "30"
      terminationGracePeriodSeconds: 60

クラスター外から SLB インスタンスにアクセスできない

原因

SLB インスタンスに ACL ルールが設定されているか、SLB インスタンスが正常に動作していません。

症状

クラスター外から SLB インスタンスにアクセスできません。

対処方法

  1. 次のコマンドを実行して Service のイベントを照会し、エラーをトラブルシューティングします。「Service のエラーと対処方法」。

    kubectl -n {your-namespace} describe svc {your-svc-name}
  2. SLB インスタンスに ACL ルールが設定されているか確認します。

    ACL ルールが設定されている場合は、クライアントの IP アドレスが許可されているか確認します。ACL の構成詳細については、「アクセス制御」をご参照ください。

  3. SLB インスタンスが vServer グループに関連付けられているか確認します。

    vServer グループが関連付けられていない場合は、アプリケーションポッドが Service に関連付けられており、正常に実行されているか確認します。Pod が正常に実行されていない場合は、トラブルシューティングを実施してください。Pod のトラブルシューティング

  4. SLB リスナーによって異常なバックエンドサーバーが検出されているか確認します。

    異常なバックエンドサーバーが検出されている場合は、アプリケーションポッドが正常に実行されているか確認します。SLB のヘルスチェックの詳細については、「ヘルスチェックスクリプトの実行」をご参照ください。

  5. 問題が解決しない場合は、ACS DingTalk サポートグループにお問い合わせください。

バックエンドの HTTPS サービスにアクセスできない

原因

SLB インスタンスに証明書を指定すると、SLB インスタンスは HTTPS リクエストを復号し、HTTP リクエストをバックエンドの Pod に転送します。

症状

バックエンドの HTTPS サービスにアクセスできません。

対処方法

Service の targetPort を HTTP ポートに設定します。たとえば、次の NGINX Service では HTTPS ポートが 443 です。この場合、targetPort の値を 80 に変更する必要があります。

例:

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:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer