web-dev-qa-db-ja.com

コンテナ内からlvcreateを呼び出すとハングします

コンテナを実行します。すべての機能を備えており、ルートからすべてのディレクトリをマウントします(/procを除く)。その中からlvcreateを呼び出すと、次のようになります。

# lvcreate -v -L104857600B -n vol1 default
Finding volume group "default"
Archiving volume group "default" metadata (seqno 17).
Creating logical volume vol1
Creating volume group backup "/etc/lvm/backup/default" (seqno 18).
Activating logical volume "vol1".
activation/volume_list configuration setting not defined: Checking only Host tags for default/vol1
Creating default-vol1
Loading default-vol1 table (252:4)
Resuming default-vol1 (252:4)

そして、コマンドがハングします。私もこれをログに記録します:

Sep 12 12:03:31 node3 systemd-udevd[12529]: Process '/sbin/dmsetup udevcomplete 23072978' failed with exit code 1

中断すると ctrl-C 論理ボリュームが作成されたことを設定しました。同じコンテナ内からdmsetup udevcomplete_allを発行して、コマンドを中断することもできます。ホストでlvcreateを呼び出すと、正常に動作し、正常に終了します。

この問題は、udevCookieがコンテナーとホスト間で共有されていないことに関係していると思います。ただし、lvmがここで何をしようとしているのか、問題を修正する方法はわかりません。

コンテナ化されたkubeletが論理ボリュームを割り当てることができるflexvolumeプラグインを呼び出すことができるように、これが必要です。

4
zefciu

この場合、udevの使用は避けるべきだと言います。これはLVMで行うのに十分簡単であり、LVMはそれ自体でボリュームとデバイスのセトリングを完全に処理できます。

/etc/lvm/lvm.confファイル内に、次の行があります。

udev_sync = 0

udev_rules = 0

そこに印刷したので、それらの値をゼロに設定して、それがクリアされるかどうかを確認します。少なくともudevは除外されます。 udev管理からLVM管理に切り替えるため、この変更を行うには、ボリュームをオフラインにする必要があります。

3
Spooler