付録3:インストールに関する問題のトラブルシューティング

Diamondインストール後の画像チェックエラーについて

Diamondのインストールが中断された時に、多くのpodにImageInspectErrorが発生する場合、以下の手順で復旧する可能性があります。

# make sure that which node  has pods with ImageInspectError
kubectl get pod -o wide

# delete image in tht pod with ImageInspectError
docker rmi -f imageId 
docker system prune 

# delete the pod with ImageInspectError 
kubectl delete pod

SenseLinkライセンスのアクティベーション

SenseLinkをアクティベーションにする前に、全てのホスト用にライセンスファイルとアクティベーションを準備する必要があります。 当手順はライセンスの更新時も同様です。ライセンスファイルの有効期限が切れる前に、必ず更新を行ってください。

また、ライセンスファイルとアクティベーションコードを申請するために、featureサービスのログからDUIDを取得する必要があります。

# get DUID of all Link node
kubectl logs -f feature-0 -n senselink | grep DUID
kubectl logs -f feature-1 -n senselink | grep DUID
kubectl logs -f feature-2 -n senselink | grep DUID

ライセンスファイルとアクティベーションコードを手に入れたら、次の処理でホストをアクティベーションできます。

ステップ1:featureポッドとpvcを削除します。

ステップ2:「feature-statefulset.yaml」を修正します。また、下記の確認を実施してください。

  1. ライセンスファイルがHOSTPATHにあること

  2. replicasの数は1となること

  3. Node selectorはapp:senselink feature:enableであること

ステップ3:ラベルkubernetesノードの設定が「feature=enable」であること

ステップ4:redis cacheにあるSenseLinkのアクティブ状態は「期限切れ」であることを確認してください。

ステップ5:featureサービスのポッドを起動して、ラベルノードをアクティします。

ステップ6:上記のステップ1〜ステップ5を繰り返して、全てのノードをアクティベーションします。その後に「feature-statefulset.yaml」を修正して下記の確認を実施します。

  1. ライセンスファイルがHOSTPATHにあること

  2. replicasの数はSenseLinkノードの数を同じであること

  3. Node selectorはapp:senselink feature:enableであること

最後にNode selectorのfeature:enableを削除します。

ステップ7:pvcを削除し、featureポッドを再起動します。

IP設定

オペレーションログのクライアントIPは実際のIPではありません。 SenseLinkポータルIPが外部SLBのIPである場合、オペレーターログのクライアントIPは実際のIPではない可能性があります。この問題を解決するには、外部配置を追加する必要があります。

SenseLinkのセッションタイムアウト設定

以下の設定からセッションタイムアウト時間を変更することができます。

PV や PVC を削除できない場合

sk patch pvc infra-claim-infra-1 -p '{"metadata":{"finalizers":null}}'

SenseLink: Apiv2 ポッドでポート番号問題により CrashLoopBackOff が発生する場合

Apiv2 ポッドクラッシュの状況

SenseLink のデプロイ後、 apiv2 ポッドが以下のように CrashLoopBackOff の状態になりました。

ポッドのログを確認すると、以下に示すような 'java.lang.String' のタイプ値を 'java.lang.Integer' の該当するタイプに変換できない (Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer') という内容のエラーが何行も表示されます。

Apiv2 ポッドクラッシュの原因

原因は不明ですが、infra-service のキャッシュにより apiv2 の正常動作を妨げられたことが原因であると推測されます。 SenseLink のコンポーネントには動作依存があります。このため、コンポーネントは順番にデプロイされます。今回のケースでは、infra-service が apiv2 の後にデプロイされていました。したがって、この問題は通常発生することはありません。

Apiv2 ポッドのクラッシュ問題の修正

statefulset infra-service と apiv2 を削除してから、apiv2、infra-service の順にデプロイします。

docker-containerd-shim、docker-runc が検出されない場合

コマンド未検出の状況

現バージョンの Diamond v1.8.3 では、Docker v18.09.2 がコンテナコンポーネントとしてインストールされますが、Ubuntu では APT アップグレードサービスによって Docker が v18.09.7 にアップグレードされることがあります。この変更により、稼働中のコンテナでエラーが発生し、k8s ポッドのエラーを引き起こします。問題のログを精査すると、docker-containerd-shim が検出されなかったことを示すエラーメッセージを確認できます。

docker-runc が検出されなかったことを示す別のエラーが表示されることもあります。

コマンド未検出の原因

根本原因は調査されていませんが、新バージョンで別の実行ライブラリ構造が使用されたため、一部のファイルが削除されていました。

コマンド未検出問題の対応策

適切なバージョンの Docker を使用して別の環境を構築することをお勧めします。任意の Docker または k8s ホストの /usr/bin/ フォルダに移動します。 docker-containerd-shim および docker-runc ファイルを問題のホストの /usr/bin/ にコピーします。

同じ問題が再び発生しないようにするためには、以下のコマンドを使用して APT のアップグレードサービスを無効にすることをお勧めします。以下のコマンドは、クラスタ内のすべてのホストに対する Diamond パブリックキーを設定するセクションで、デプロイメントガイドに追加されています。

SNTP Server By Default

ワークロードマシンにNTPサービスを使用したい場合は、クラウドサービスのNTPサービスマニュアルを参照してください。

最終更新

役に立ちましたか?