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
作業ノードに新しいコンテナーを作成することができず、can't stat lower layer というエラーが表示される。
can't stat lower layer ... because it does not exist. Going through storage to recreate the missing symlinks.
-
クラスターをアップグレードした後、またはノードを再起動しようとすると、ノードが
NotReady
状態になる。 -
コンテナーランタイム実装
(crio
) が正しく動作していない。 -
コンテナーランタイムインスタンス
(crio
) が動作していないため、oc debug node/<nodename>
を使用してノード上でデバッグシェルを開始することができまない。
この手順で、CRI-O のストレージを完全に消去し、エラーを解消してください。
前提条件:
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
ノードで
cordon
を使用します。これは、ノードがReady
状態になった場合に、ワークロードがスケジューリングされるのを防ぐためです。Status セクションにSchedulingDisabled
と表示されていれば、スケジューリングが無効になっていることがわかります。$ oc adm cordon <nodename>
cluster-admin ユーザーとして、ノードをドレインします。
$ oc adm drain <nodename> --ignore-daemonsets --delete-local-data
注記Pod または Pod テンプレートの
terminateGracePeriodSeconds
属性は、正常な終了期間を制御します。この属性のデフォルトは 30 秒ですが、必要に応じてアプリケーションごとにカスタマイズできます。90 秒を超えて設定すると、Pod がSIGKILLed
とマークされ、正常に終了しない可能性があります。ノードが戻ってきたら、SSH またはコンソールでノードに接続し直します。その後、root ユーザーで接続します。
$ ssh core@node1.example.com $ sudo -i
kubelet を手動で停止します。
# systemctl stop kubelet
コンテナーや Pod を停止します。
# crictl rmp -fa
crio のサービスを手動で停止します。
# systemctl stop crio
これらのコマンドを実行すると、一時ストレージを完全に消去することができます。
# crio wipe -f
crio および kubelet サービスを起動します。
# systemctl start crio # systemctl start kubelet
crio および kubelet サービスが起動しており、ノードが
Ready
のステータスになっている場合には、クリーンアップが正常に機能したことが分かります。$ oc get nodes
出力例
NAME STATUS ROLES AGE VERSION ci-ln-tkbxyft-f76d1-nvwhr-master-1 Ready, SchedulingDisabled master 133m v1.22.0-rc.0+75ee307
ノードをスケジューリング可能な状態にします。スケジューリングが有効になったことは、
SchedulingDisabled
のステータスがなくなったときにわかります。$ oc adm uncordon <nodename>
出力例
NAME STATUS ROLES AGE VERSION ci-ln-tkbxyft-f76d1-nvwhr-master-1 Ready master 133m v1.22.0-rc.0+75ee307