Container Service for Kubernetes (ACK) コンソールでコンポーネントの操作が失敗すると、画面にエラーコードが表示されます。このページでは、すべてのコンポーネントのエラーコード、その原因、および解決策について説明します。
エラーコードリファレンス
| エラーコード | 説明 |
|---|---|
| AddonOperationFailed.ResourceExists | コンポーネントに必要なリソースがクラスター内にすでに存在します |
| AddonOperationFailed.ReleaseNameInUse | コンポーネントと同じ名前の Helm リリースがすでに存在します |
| AddonOperationFailed.WaitForAddonReadyTimeout | 更新リクエストが送信された後、コンポーネントの Pod が Ready 状態に到達できません |
| AddonOperationFailed.APIServerUnreachable | ACK が Kubernetes API サーバーにアクセスできません |
| AddonOperationFailed.ResourceNotFound | コンポーネントに必要なリソースが見つかりません |
| AddonOperationFailed.TillerUnreachable | Helm V2 の Tiller にアクセスできません |
| AddonOperationFailed.FailedCallingWebhook | コンポーネントリソースの Mutating Webhook を呼び出せません |
| AddonOperationFailed.UserForbidden | Tiller に必要なロールベースアクセス制御 (RBAC) 権限がありません |
| AddonOperationFailed.TillerNotFound | クラスター内で実行中の Tiller Pod がありません |
| AddonOperationFailed.ErrPatchingClusterRoleBinding | コンポーネントに必要な ClusterRoleBinding は存在しますが、設定に競合があります |
| AddonOperationFailed.ErrApplyingPatch | コンポーネントの YAML マニフェストにバージョン間の互換性がありません |
AddonOperationFailed.ResourceExists
症状
コンソールに次のようなエラーメッセージが表示されます。
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原因
コンポーネントに必要なリソースがクラスター内にすでに存在するため、インストールできません。これは通常、次の場合に発生します。
別のバージョンのコンポーネント (オープンソース版など) が、別の方法ですでにインストールされている。
コンポーネントが Helm V2 でインストールされており、Helm V3 への移行前にそのリソースが削除されなかった。
コンポーネントが必要とするリソースと同じ名前のリソースが手動で作成された。
ソリューション
エラーメッセージで特定された競合するリソースを削除してから、インストールまたは更新を再試行してください。
エラーメッセージには、削除するリソースが示されています。次のセクションでは、特定のコンポーネントに対する正確なコマンドをリストします。
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-systemack-node-local-dns
リソースを削除しても、ご利用のワークロードに影響はありません。削除から更新までの間に Pod を追加しないでください。追加した場合は、コンポーネントの更新後にそれらの Pod を削除して再作成し、DNS キャッシュを再インジェクトしてください。
kubectl delete MutatingWebhookConfiguration ack-node-local-dns-admission-controllerリソースを削除した後、ack-node-local-dns を更新します。
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リソースを削除した後、arms-cmonitor をインストールまたは更新します。
AddonOperationFailed.ReleaseNameInUse
原因
コンポーネントと同じ名前の Helm リリースがクラスター内にすでに存在します。これにより、Helm がコンポーネントをインストールまたは更新できなくなります。一般的な原因は次のとおりです。
別のバージョンのコンポーネントが、別の方法でインストールされている。
以前のインストール試行で残った Helm リリースが存在する。
ソリューション
AddonOperationFailed.WaitForAddonReadyTimeout
原因
更新リクエストは送信されましたが、コンポーネントの Pod がタイムアウト期間内に Ready 状態に到達できません。
トラブルシューティング
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスターの名前をクリックします。左側のペインで、[操作] > [イベントセンター] を選択します。
[イベント (クラスターリソースイベント)] タブで、[レベル] を 警告 に設定し、コンポーネントがデプロイされている名前空間を選択して、[タイプ] を [Pod] に設定します。イベントの詳細を確認して、原因を特定します。次のセクションでは、一般的な原因とそのソリューションについて説明します。
一般的な原因とソリューション
原因 1:Pod をスケジューリングできない (FailedScheduling)
クラスター内のノードが、コンポーネントの Pod のスケジューリング要件を満たしていません。イベントの詳細で、次のいずれかのメッセージを確認してください。
| イベントメッセージ | 原因 | ソリューション |
|---|---|---|
Insufficient memory または Insufficient cpu | ノードのリソースが不足しています | 不要な Pod を削除するか、クラスターにノードを追加するか、ノードの設定をアップグレード |
the pod didn't tolerate | ノードの Taint がコンポーネントの Pod によって許容されていません | ノードから Taint を削除 |
didn't match pod anti-affinity rules | Pod アンチアフィニティルールを満たすことができません | クラスターにノードを追加 |
スケジューリングの問題を解決した後、コンポーネントを再度更新します。
原因 2:Pod サンドボックスを作成できない (FailedCreatePodSandBox)
ネットワークプラグインが Pod に IP アドレスを割り当てることができません。イベントの詳細を確認してください。
メッセージに
vSwitch have insufficient IPが含まれている場合は、Terway モードで新しい Pod vSwitch を追加します。メッセージに
transport: Error while dialingが含まれている場合は、Pod のトラブルシューティングを行い、クラスターのネットワークプラグインが正しく動作しているか確認します。
AddonOperationFailed.APIServerUnreachable
原因
ACK が Kubernetes API サーバーに到達できません。最も一般的な原因は、API サーバーを公開している Server Load Balancer (SLB) インスタンスの設定が間違っているか、期待どおりに動作していないことです。
ソリューション
詳細については、「API サーバーリクエストの例外のトラブルシューティング」をご参照ください。
AddonOperationFailed.ResourceNotFound
原因
コンポーネントに必要なリソースが見つかりません。おそらく外部で削除または変更されたため、コンポーネントをインプレースで更新できません。
ソリューション
コンポーネントをアンインストールし、最新バージョンをインストールしてください。
AddonOperationFailed.TillerUnreachable
原因
このコンポーネントは Helm V2 を使用しており、インストールと更新は Tiller に依存しています。Tiller でエラーが発生し、アクセスできなくなっています。
ソリューション
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスターの名前をクリックします。 左側のペインで、[ワークロード] > [ポッド] を選択します。
kube-system名前空間を選択します。[tiller] Podを検索して削除します。システムが自動的に再作成します。Tiller Pod が Ready 状態になった後、コンポーネントの操作を再試行します。
AddonOperationFailed.FailedCallingWebhook
症状
コンソールに次のようなエラーメッセージが表示されます。
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"原因
コンポーネントリソース用に設定された Mutating Webhook を呼び出せないため、リソースの更新がブロックされています。
ソリューション
失敗した Webhook のトラブルシューティングを行い、問題を修正してから、コンポーネントを再度更新してください。エラーメッセージから、呼び出せない Webhook を特定できます。
上記の例では、cattle-system 名前空間の rancher-webhook Webhook が利用できません。
AddonOperationFailed.UserForbidden
原因
クラスターは Helm V2 を使用していますが、Tiller にリソースのクエリと更新に必要な RBAC 権限がないため、コンポーネントのインストールまたは更新ができません。
ソリューション
Tiller に必要な RBAC 権限を付与します。詳細については、「ロールベースアクセス制御」をご参照ください。
AddonOperationFailed.TillerNotFound
原因
クラスターは Helm V2 を使用していますが、クラスター内で正常に実行されている Tiller Pod がありません。
ソリューション
kube-system 名前空間の tiller-deploy Pod のトラブルシューティングを行います。Pod が正常に実行された後、コンポーネントの操作を再試行します。トラブルシューティングの手順については、「Pod の問題のトラブルシューティング」をご参照ください。
AddonOperationFailed.ErrPatchingClusterRoleBinding
原因
コンポーネントに必要な ClusterRoleBinding はクラスター内にすでに存在しますが、その設定がコンポーネントが期待するものと競合しています。これは通常、オープンソース版のコンポーネントが別途インストールされている場合に発生します。
ソリューション
クラスターからオープンソース版のコンポーネントをアンインストールします。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスターの名前をクリックします。左ペインで、[アプリケーション] > [Helm] を選択します。
コンポーネント名の Helm リリースを検索してください。[操作] 列で [削除] をクリックしてください。ダイアログボックスで [リリース記録のクリア] を選択し、[OK] をクリックしてください。
コンポーネントをインストールまたは更新します。
AddonOperationFailed.ErrApplyingPatch
症状
コンソールに次のようなエラーメッセージが表示されます。
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"原因
現在インストールされているコンポーネントバージョンの YAML マニフェストがターゲットバージョンと互換性がないため、更新ができません。これは、次のような場合に発生する可能性があります。
別のバージョンのコンポーネント (オープンソース版など) が、別の方法でインストールされている。
コンポーネントの YAML マニフェストが手動で変更された。
現在インストールされているバージョンがサポートされなくなった。
ソリューション
エラーメッセージに基づいて、コンポーネントの YAML マニフェストを修正してください。サポートが必要な場合は、チケットを送信してください。
例:Flannel コンテナ名の競合
廃止された Flannel バージョンがインストールされている場合、更新が次のエラーで失敗することがあります。
spec.template.spec.initContainers[1].name: Duplicate value: "install-cni"これを修正するには、Flannel の DaemonSet マニフェストを編集します。
kubectl -n kube-system edit ds kube-flannel-dsマニフェストで、spec.template.spec.containers の下にある install-cni コンテナの定義を見つけて削除します (以下の例の 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
...
これらの行を削除しても、実行中のワークロードは中断されません。ローリングアップデートが自動的に開始されます。完了後、ACK コンソールから Flannel を更新します。詳細については、「コンポーネントの管理」をご参照ください。