This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.3.4. CRI-O ストレージの消去
以下の問題が発生した場合、CRI-O の一時ストレージを手動でクリアすることができます。
ノードがどの Pod でも実行できず、このエラーが表示される。
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to mount container XXX: error recreating the missing symlinks: error reading name of symlink for XXX: open /var/lib/containers/storage/overlay/XXX/link: no such file or directory
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to mount container XXX: error recreating the missing symlinks: error reading name of symlink for XXX: open /var/lib/containers/storage/overlay/XXX/link: no such file or directory
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作業ノードに新しいコンテナーを作成することができず、can't stat lower layer というエラーが表示される。
can't stat lower layer ... because it does not exist. Going through storage to recreate the missing symlinks.
can't stat lower layer ... because it does not exist. Going through storage to recreate the missing symlinks.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
クラスターをアップグレードした後、またはノードを再起動しようとすると、ノードが
NotReady
状態になる。 -
コンテナーランタイム実装
(crio
) が正しく動作していない。 -
コンテナーランタイムインスタンス
(crio
) が動作していないため、oc debug node/<nodename>
を使用してノード上でデバッグシェルを開始することができまない。
この手順で、CRI-O のストレージを完全に消去し、エラーを解消してください。
前提条件:
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
ノードで
cordon
を使用します。これは、ノードがReady
状態になった場合に、ワークロードがスケジューリングされるのを防ぐためです。Status セクションにSchedulingDisabled
と表示されていれば、スケジューリングが無効になっていることがわかります。oc adm cordon <nodename>
$ oc adm cordon <nodename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-admin ユーザーとして、ノードをドレインします。
oc adm drain <nodename> --ignore-daemonsets --delete-local-data
$ oc adm drain <nodename> --ignore-daemonsets --delete-local-data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Pod または Pod テンプレートの
terminateGracePeriodSeconds
属性は、正常な終了期間を制御します。この属性のデフォルトは 30 秒ですが、必要に応じてアプリケーションごとにカスタマイズできます。90 秒を超えて設定すると、Pod がSIGKILLed
とマークされ、正常に終了しない可能性があります。ノードが戻ってきたら、SSH またはコンソールでノードに接続し直します。その後、root ユーザーで接続します。
ssh core@node1.example.com sudo -i
$ ssh core@node1.example.com $ sudo -i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubelet を手動で停止します。
systemctl stop kubelet
# systemctl stop kubelet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーや Pod を停止します。
crictl rmp -fa
# crictl rmp -fa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crio のサービスを手動で停止します。
systemctl stop crio
# systemctl stop crio
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのコマンドを実行すると、一時ストレージを完全に消去することができます。
crio wipe -f
# crio wipe -f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crio および kubelet サービスを起動します。
systemctl start crio systemctl start kubelet
# systemctl start crio # systemctl start kubelet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crio および kubelet サービスが起動しており、ノードが
Ready
のステータスになっている場合には、クリーンアップが正常に機能したことが分かります。oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION ci-ln-tkbxyft-f76d1-nvwhr-master-1 Ready, SchedulingDisabled master 133m v1.22.0-rc.0+75ee307
NAME STATUS ROLES AGE VERSION ci-ln-tkbxyft-f76d1-nvwhr-master-1 Ready, SchedulingDisabled master 133m v1.22.0-rc.0+75ee307
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードをスケジューリング可能な状態にします。スケジューリングが有効になったことは、
SchedulingDisabled
のステータスがなくなったときにわかります。oc adm uncordon <nodename>
$ oc adm uncordon <nodename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ROLES AGE VERSION ci-ln-tkbxyft-f76d1-nvwhr-master-1 Ready master 133m v1.22.0-rc.0+75ee307
NAME STATUS ROLES AGE VERSION ci-ln-tkbxyft-f76d1-nvwhr-master-1 Ready master 133m v1.22.0-rc.0+75ee307
Copy to Clipboard Copied! Toggle word wrap Toggle overflow