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

Container Service for Kubernetes:コンポーネントのトラブルシューティング

最終更新日:Jul 03, 2025

コンテナサービス Kubernetes 版 (ACK) コンソールでコンポーネントをインストール、更新、または変更するときにエラーが発生した場合、コンソールにエラーコードが表示されます。 このトピックでエラーコードを検索して、エラーの詳細、エラーの原因、およびエラーの解決策を確認できます。 このトピックでは、コンポーネントの管理時に表示される可能性のあるエラーコードをリストし、これらのエラーの原因と解決策について説明します。

AddonOperationFailed.ResourceExists

原因

コンポーネントに必要な特定のリソースがクラスターに既に存在するため、コンポーネントを直接インストールできません。 このエラーコードは、以下のシナリオで返される可能性があります。

  • 他の方法を使用して、オープンソースバージョンなど、別のバージョンのコンポーネントをクラスターにインストールしました。

  • Helm V2 を使用してコンポーネントをインストールしましたが、Helm を V3 に更新する前にコンポーネントが移行またはアンインストールされていません。

  • クラスター内で、コンポーネントに必要なリソースと同じ名前のリソースを作成しました。

解決策

問題の原因となっている既存のリソースを削除します。 問題の原因となっている既存のリソースは、エラーメッセージで確認できます。 例:

Addon status not match, failed upgrade helm addon arms-cmonitor for cluster c3cf94b952cd34b54b71b10b7********, err: rendered manifests contain a resource that already exists. Unable to continue with update: ConfigMap "otel-collector-config" in namespace "arms-prom" exists and cannot be imported into the current release

エラーメッセージは、arms-prom 名前空間の otel-collector-config ConfigMap を削除する必要があることを示しています。

次の例は、特定のコンポーネントについてこの問題を修正する方法を示しています。

  • arms-prometheus

    arms-prometheus の場合は、arms-prometheus がインストールされている名前空間を削除します。 ほとんどの場合、arms-prometheus は arms-prom 名前空間にインストールされています。 次のコマンドを実行して、以下のリソースを削除します。 その後、arms-prometheus を再度インストールまたは更新します。

    kubectl delete ClusterRole arms-kube-state-metrics
    kubectl delete ClusterRole arms-node-exporter
    kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role
    kubectl delete ClusterRole arms-prometheus-oper3
    kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role
    kubectl delete ClusterRole arms-pilot-prom-k8s
    kubectl delete ClusterRoleBinding arms-node-exporter
    kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding
    kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2
    kubectl delete ClusterRoleBinding kube-state-metrics
    kubectl delete ClusterRoleBinding arms-pilot-prom-k8s
    kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding
    kubectl delete Role arms-pilot-prom-spec-ns-k8s
    kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system
    kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s
    kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system
  • ack-node-local-dns

    ack-node-local-dns の場合は、次のコマンドを実行して以下のリソースを削除し、ack-node-local-dns を再度更新します。

    重要

    これらのリソースが削除された後、ビジネスへの影響はありません。 ただし、これらのリソースが削除された後、コンポーネントが再度更新されるまでの間は、ポッドを追加しないことをお勧めします。 この期間中に新しいポッドを追加する場合は、コンポーネントが更新された後にこれらのポッドを削除して再作成し、DNS キャッシュをポッドに再度挿入することをお勧めします。

    kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controller
  • arms-cmonitor

    arms-cmonitor の場合は、次のコマンドを実行して以下のリソースを削除し、arms-cmonitor を再度インストールまたは更新します。

    kubectl delete ConfigMap otel-collector-config -n arms-prom
    kubectl delete ClusterRoleBinding arms-prom-cmonitor-role-binding
    kubectl delete ClusterRoleBinding arms-prom-cmonitor-install-init-role-binding
    kubectl delete ClusterRole arms-prom-cmonitor-role
    kubectl delete ClusterRole arms-prom-cmonitor-install-init-role
    kubectl delete ServiceAccount cmonitor-sa-install-init -n kube-system

AddonOperationFailed.ReleaseNameInUse

原因

コンポーネントと同じ名前の Helm リリースがクラスターに既に存在します。 そのため、Helm を使用してコンポーネントを直接インストールまたは更新することはできません。 このエラーコードは、以下のシナリオで返される可能性があります。

  • 他の方法を使用して、オープンソースバージョンなど、別のバージョンのコンポーネントをクラスターにインストールしました。

  • コンポーネントと同じ名前の残留 Helm リリースが存在します。

解決策

クラスター内の既存の Helm リリースを削除するには、次の手順を実行します。

  1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、目的のクラスターを見つけて名前をクリックします。 左側のペインで、[アプリケーション] > [Helm] を選択します。

  3. Helm ページで、コンポーネントと同じ名前の残留 Helm リリースを見つけます。 [アクション] 列の [削除] をクリックします。 削除ダイアログボックスで、[リリースレコードをクリア] を選択し、[OK] をクリックします。

  4. Helm リリースが削除されたら、コンポーネントをインストールまたは更新します。

AddonOperationFailed.WaitForAddonReadyTimeout

原因

コンポーネントの更新リクエストは送信されましたが、コンポーネントポッドが Ready 状態に到達できません。 その結果、コンポーネントを更新できません。

トラブルシューティング

コンポーネントポッドが Ready 状態に到達できない問題をトラブルシューティングするには、次の手順を実行します。

  1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、目的のクラスターを見つけて名前をクリックします。 左側のペインで、[操作] > [イベントセンター] を選択します。

  3. [イベント (クラスターリソースイベント)] タブで、[レベル] ドロップダウンリストから [警告] を選択し、コンポーネントがデプロイされている名前空間を選択し、[タイプ] ドロップダウンリストから [Pod] を選択すると、コンポーネントに関連するイベントを表示できます。

    イベントの詳細を分析して原因を特定できます。 次の 一般的な原因と解決策 セクションでは、この問題の一般的な原因と解決策について説明します。

一般的な原因と解決策

原因 1: コンポーネントポッドをスケジュールできない

イベントの内容: FailedScheduling

イベントの説明: クラスター内のノードが、次の理由により、コンポーネントポッドをホストするための要件を満たしていません。 イベントの詳細に基づいて原因を特定できます。

  • ノード上の使用可能な CPU とメモリリソースが、コンポーネントポッドをホストするには不十分です。 この場合、イベントの詳細には [メモリ不足] または [CPU 不足] が含まれます。

  • ノードに、コンポーネントポッドが許容しない taint があります。 この場合、イベントの詳細には [ポッドが許容しなかった] が含まれます。

  • ノードが、コンポーネントポッドのアンチアフィニティルールを満たすのに不十分です。 この場合、イベントの詳細には [ポッドのアンチアフィニティルールと一致しなかった] が含まれます。

解決策: コンポーネントポッドのスケジューリングの要件を満たすために、次の操作を実行します。 その後、コンポーネントを再度更新します。

原因 2: コンポーネントポッドを作成できない

イベントの内容: FailedCreatePodSandBox

イベントの説明: ポッドサンドボックスの作成に失敗しました。 この問題の一般的な原因は、ネットワークプラグインがポッドに IP アドレスを割り当てることができないことです。

解決策:

AddonOperationFailed.APIServerUnreachable

原因

ACK がクラスターの Kubernetes API サーバーにアクセスできません。 原因は、Kubernetes API サーバーを公開するために使用される Server Load Balancer (SLB) インスタンスが想定どおりに動作していないか、SLB インスタンスが正しく構成されていない可能性があります。

解決策

この問題のトラブルシューティング方法の詳細については、クラスターリソースにアクセスするときに API サーバーリクエスト例外が発生する を参照してください。

AddonOperationFailed.ResourceNotFound

原因

システムがコンポーネントに必要なリソースを見つけられないため、コンポーネントを直接更新できません。 原因は、リソースが変更または削除された可能性があります。

解決策

コンポーネントをアンインストールしてから、最新バージョンのコンポーネントをインストールします。

AddonOperationFailed.TillerUnreachable

原因

コンポーネントは Helm V2 を使用してインストールされており、コンポーネントのインストールまたは更新は Tiller に依存しています。 Tiller でエラーが発生し、アクセスできません。 その結果、コンポーネントに対する操作を実行できません。

解決策

Tiller を再起動するには、次の手順を実行します。

  1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、目的のクラスターを見つけて名前をクリックします。 左側のペインで、[ワークロード] > [ポッド] を選択します。

  3. kube-system 名前空間を選択します。 [tiller] ポッドを見つけて削除します。 その後、システムがポッドを再作成するまで待ちます。

  4. Tiller ポッドが Ready 状態になったら、操作を再実行します。

AddonOperationFailed.FailedCallingWebhook

原因

コンポーネントに必要な特定のリソースに対して変更 Webhook が作成されますが、Webhook を呼び出すことができません。 その結果、これらのリソースを更新できません。

解決策

Webhook のトラブルシューティングを行い、問題を修正します。 その後、コンポーネントを再度更新します。 呼び出すことができない Webhook は、エラーメッセージで確認できます。 例:

failed to create: Internal error occurred: failed calling webhook "rancher.cattle.io": failed to call webhook: Post "https://rancher-webhook.cattle-system.svc:443/v1/webhook/mutation?timeout=10s": no endpoints available for service "rancher-webhook"

上記のエラーメッセージは、rancher-webhook Webhook を呼び出すことができないことを示しています。

AddonOperationFailed.UserForbidden

原因

クラスターでは Helm V2 が使用されていますが、Tiller にはリソースをクエリおよび更新するためのロールベースアクセス制御 (RBAC) 権限がありません。 その結果、コンポーネントをインストールまたは更新できません。

解決策

Tiller に必要な RBAC 権限を付与します。 詳細については、ロールベースアクセス制御 を参照してください。

AddonOperationFailed.TillerNotFound

原因

クラスターは Helm V2 を使用していますが、クラスター内で Tiller ポッドが正常に実行されていません。 そのため、Helm を使用してコンポーネントを管理できません。

解決策

kube-system 名前空間の tiller-deploy ポッドの問題をトラブルシューティングします。 tiller-deploy ポッドが正常に実行されたら、コンポーネントを管理します。 ポッドの問題のトラブルシューティング方法の詳細については、ポッドのトラブルシューティング を参照してください。

AddonOperationFailed.ErrPatchingClusterRoleBinding

原因

コンポーネントが依存する ClusterRoleBinding がクラスターに既に存在します。 ただし、ClusterRoleBinding の構成は、コンポーネントに必要な構成とは異なります。 その結果、コンポーネントを更新できません。 原因は、オープンソースバージョンのコンポーネントがクラスターにインストールされている可能性があります。

解決策

クラスターにインストールされているオープンソースバージョンをアンインストールするには、次の手順を実行します。

  1. ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、目的のクラスターを見つけて名前をクリックします。 左側のペインで、[アプリケーション] > [Helm] を選択します。

  3. Helm ページで、コンポーネントと同じ名前の残留 Helm リリースを見つけます。 [アクション] 列の [削除] をクリックします。 削除ダイアログボックスで、[リリースレコードをクリア] を選択し、[OK] をクリックします。

  4. Helm リリースが削除されたら、コンポーネントをインストールまたは更新します。

AddonOperationFailed.ErrApplyingPatch

原因

以前のコンポーネントバージョンの YAML テンプレートが新しいバージョンの YAML テンプレートと互換性がありません。 その結果、コンポーネントを更新できません。 この問題は、次のシナリオで発生する可能性があります。

  • 他の方法を使用して、オープンソースバージョンなど、別のバージョンのコンポーネントをクラスターにインストールしました。

  • コンポーネントの YAML テンプレートを変更しました。

  • 以前のバージョンのコンポーネントが廃止されました。

解決策

エラーメッセージに基づいて、クラスターにインストールされているコンポーネントの YAML テンプレートを変更する必要があります。 詳細については、チケットを送信 してください。

たとえば、廃止されたバージョンの Flannel がクラスターにインストールされており、コンテナ名の競合が原因でコンポーネントの更新に失敗したとします。 次のエラーメッセージが返されます。

spec.template.spec.initContainers[1].name: Duplicate value: \"install-cni\"

この問題を修正するには、kubectl -n kube-system edit ds kube-flannel-ds コマンドを実行して、Flannel の YAML テンプレートを変更します。 spec.template.spec.containers フィールドで、install-cni という名前の container 定義を削除します。 この例では、7 行目から 21 行目のコメント行を削除します。

      containers:
      - name: kube-flannel
        image: registry-vpc.{{.Region}}.aliyuncs.com/acs/flannel:{{.ImageVersion}}
        command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ]
        ...
        # 無関係な行は表示されません。7 行目から 21 行目のコメント行を削除します。
    # - command:
      # - /bin/sh
      # - -c
      # - set -e -x; cp -f /etc/kube-flannel/cni-conf.json /etc/cni/net.d/10-flannel.conf;
        # while true; do sleep 3600; done
      # image: registry-vpc.cn-beijing.aliyuncs.com/acs/flannel:v0.11.0.1-g6e46593e-aliyun
      # imagePullPolicy: IfNotPresent
      # name: install-cni
      # resources: {}
      # terminationMessagePath: /dev/termination-log
      # terminationMessagePolicy: File
      # volumeMounts:
      # - mountPath: /etc/cni/net.d
        # name: cni
      # - mountPath: /etc/kube-flannel/
         # 無関係な行は表示されません。7 行目から 21 行目のコメント行を削除します。
          name: flannel-cfg
        ...
       

上記の行を削除しても、サービス中断は発生しません。 行が削除されると、Flannel がデプロイされているコンテナに対してローリングアップデートが自動的に実行されます。 更新が完了したら、ACK コンソールで Flannel を更新できます。 詳細については、コンポーネントの管理 を参照してください。