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) がインストールされている。

手順

  1. ノードでcordonを使用します。これは、ノードがReady状態になった場合に、ワークロードがスケジューリングされるのを防ぐためです。StatusセクションにSchedulingDisabledと表示されていれば、スケジューリングが無効になっていることがわかります。

    $ oc adm cordon <nodename>
  2. cluster-adminユーザーとして、ノードをドレインします。

    $ oc adm drain <nodename> --ignore-daemonsets --delete-local-data
  3. ノードが戻ってきたら、SSHまたはコンソールでノードに接続し直します。その後、rootユーザーで接続します。

    $ ssh core@node1.example.com
    $ sudo -i
  4. kubelet を手動で停止します。

    # systemctl stop kubelet
  5. コンテナやポッドを止めます。

    # crictl rmp -fa
  6. crioのサービスを手動で停止します。

    # systemctl stop crio
  7. これらのコマンドを実行すると、一時ストレージを完全に消去することができます。

    # crio wipe -f
  8. crio および kubelet サービスを起動します。

    # systemctl start crio
    # systemctl start kubelet
  9. 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

  10. ノードをスケジューリング可能な状態にします。スケジューリングが有効になったことは、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

    = オペレーティングシステムの問題のトラブルシューティング :experimental: :imagesdir: images :prewrap!: :op-system-first Red Hat Enterprise Linux CoreOS(RHCOS):op-system: RHCOS :op-system-base: rhel :op-system-base-full: Red Hat Enterprise Linux(RHEL):tsb-name: テンプレートサービスブローカー :kebab: kebab :RH-openstack-first: Red Hat OpenStack Platform(RHOSP):rh-openstack: rhosp :cloud-redhat-com: Red Hat OpenShift Cluster Manager :rh-storage-first: Red Hat OpenShift Container Storage :rh-storage: OpenShift Container Storage :rh-rhacm-first: Red Hat Advanced Cluster Management(RHACM):rh-rhacm: RHACM :sandboxed-containers-first: OpenShift サンドボックスコンテナー :sandboxed-containers-operator: OpenShift サンドボックスコンテナー Operator :rh-virtualization-first Red Hat Virtualization(RHV):rh-virtualization: RHV :rh-virtualization-engine-name: manager:launch: app launcher :MTC-short: MTC :HELP-full: MTC(Migration Toolkit for Containers): 1.6 :nexus-legacy-version: 1.5 :nexus-legacy-version-z: 1.5.3 :context: troubleshooting-operating-system-issues

OpenShift Container Platform は RHCOS で実行されます。以下の手順に従って、オペレーティングシステムに関連する問題のトラブルシューティングを行うことができます。