アダプターのプロビジョニングの問題のトラブルシューティング

アダプターをプロビジョニングすると、リソースが不十分であったり、イメージにアクセスできなかったりといった問題が発生する場合があります。以下の各セクションでは、デプロイメントとサービスの問題の考えられる原因と解決法を説明します。

リソースの割り当てが不十分

アダプターをプロビジョニングしようとしても、アダプターポッドが起動できません。

原因

アダプターポッドに十分な CPU スペースが割り当てられていないと、アダプターはエラーとなります。

診断

この問題を診断する手順は、次のとおりです。

  1. アダプターの状況を確認します。

    $ asmctl adapter list

    状況が表示されるまでには数分かかります。

  2. アダプターの状況が ​Failed​ である場合は、次のコマンドを実行します。 ​$ kubectl -n service-mesh get pods

  3. アダプターポッドの状況を確認します。

    $ kubectl -n service-mesh get pods | grep grpcmule

    状況が「Pending (保留中)」であれば、ポッドの状態を確認します。

    $ kubectl -n service-mesh describe pods -l namespace=​namespace

  4. grpcmule-​namespace​ ポッドが表示されない場合は、アダプターを作成した直後に (プロビジョニング中でエラーとなる前に) 同じコマンドを実行します。

    $ kubectl -n service-mesh describe pods -l namespace=​namespace

  5. 次のいずれかのアクションを実行します。

    • [Events (イベント)] セクションに「Insufficient CPU (CPU が不十分です)」や他のリソース情報が表示されていないか確認します。

Events:
Type     Reason            Age                 From               Message
----     ------            ----                ----               -------
Warning  FailedScheduling  46s (x5 over 3m7s)  default-scheduler  0/3 nodes are available: 3 Insufficient cpu.
text
  • ノードの状況でリソースの割り当てを確認します。

    $ kubectl describe nodes​ 割り当てられているリソースが表示されます。

アダプターのプロビジョニングに使用できるリソースが不十分

解決策

この問題を解決する手順は、次のとおりです。

  1. 既存のアダプターを削除します。

  2. 必要に応じて Kubernetes クラスターに追加のリソースを割り当てます。

  3. アダプターを再びプロビジョニングします。

イメージを取り込めない

アダプターをプロビジョニングした後、アダプターがエラーで起動できません。

原因

アダプターで無効なログイン情報が指定されているか、または ​registry-credentials-rotator​ ポッドで問題が発生しています。

診断

この問題を診断するには、影響を受けているアダプターポッドの状況を確認します。

$ kubectl -n service-mesh get pods​ ポッドの状況は ​ErrImagePull​ または ​ImagePullBackOff​ になります。

解決策

この問題を解決する手順は、次のとおりです。

  1. registry-credentials-rotator ポッドが動作中であることを確認します。

    $ kubectl -n service-mesh get pod -l app=service-mesh-registry-credentials-rotator

  2. ポットのログで、クライアント ID とクライアントシークレット、エンタイトルメント、または権限の問題が発生していないことを確認します。

    $ kubectl -n service-mesh logs $(kubectl -n service-mesh get pod -l app=service-mesh-registry-credentials-rotator -oname)

  3. プルシークレットが作成されていることを確認します。

    $ kubectl -n service-mesh get secret service-mesh-pull-secret

  4. 正しいプラットフォーム URL とログイン情報が指定されていることを確認します。

    $ kubectl -n service-mesh get secret service-mesh-registry-credentials-rotator-env -ogo-template='CLIENT_ID:{{.data.CLIENT_ID|base64decode}} CLIENT_SECRET:{{.data.CLIENT_SECRET|base64decode}}'

    $ kubectl -n service-mesh get cm service-mesh-registry-credentials-rotator-env -ogo-template='PLATFORM_URI:{{.data.PLATFORM_URI}}'

ライセンスの問題で Mule Runtime Engine が起動できない

アダプターをリストしようとすると、​Failed​ の状況が返されることがあります。

原因

必要なエンタイトルメントを備えた有効な Mule Runtime Engine (Mule) ライセンスを指定しないと、Mule アダプターは起動しません。

診断

この問題を診断する手順は、次のとおりです。

  1. アダプターの状況を確認します。

    $ asmctl adapter list

  2. アダプターの状況が ​Failed​ である場合は、(grpcmule-<namespace>) アダプターポッドの状況を確認します。

    $ kubectl -n service-mesh get pods​ この場合、ポッドの状況は ​CrashLoopBackOff​ として表示されることがあります。

解決策

この問題を解決するには、有効なライセンスでアダプターを更新します。

$ asmctl management config license --license=/path/to/license.lic

カタログコンテンツの初期化に失敗した

カタログコンテンツが正しく初期化されていなかったために、アダプターをプロビジョニングが失敗することがあります。

原因

アダプターのプロビジョニング、バインドの作成、API の作成には、Anypoint Service Mesh カタログコンポーネントが必要です。カタログが正しく初期化されていないと、アダプターはエラーとなります。

診断

この問題を診断する手順は、次のとおりです。

  1. アダプターのログを確認します。

    $ asmctl adapter logs --namespace=​adapter_namespace​ --name=​adapter_name

    次のような出力が表示されます。

    2019-11-26T20:46:35Z Error provisioning ServiceInstance of ClusterServiceClass (K8S: "4f6e6cf6-ffdd-425f-a2c7-3c9258ad246a" ExternalName: "anypoint-service-mesh-adapter") at ClusterServiceBroker "service-mesh-incluster-broker": Status: 500; ErrorMessage: <nil>; Description: Catalog content init failed; ResponseError: <nil>

解決策

この問題を解決するには、次のコマンドでカタログを強制的に初期化します。

$ kubectl -n service-mesh patch clusterservicebrokers/service-mesh-incluster-broker --type=json -p='[{"op": "replace", "path": "/spec/relistRequests","value":1}]'

アダプターの削除に失敗した

作成してあるアダプターを削除しようとすると、問題が発生することがあります。

原因

削除しようとしているアダプターにサービスバインドが関連付けられている場合、そのアダプターは削除できません。

診断

この問題を診断するには、アダプターの状況を確認します。

$ asmctl adapter list

アダプターまたはサービスインスタンスにバインドが関連付けられている場合、状況は ​DeprovisionBlockedByExistingCredentials​ と表示されます。

解決策

この問題を解決するには、アダプターに関連付けられているすべてのバインドを削除します。すべてのバインドを正常に削除できたら、アダプターを削除します。