delta_lt_0

delta_lt_0

人生苦短 及时行乐

KubeVirt のいくつかのバックドア

もし KubeVirt のソースコードを変更しない場合、いくつかの要件を実現するのは難しいかもしれません。なぜなら、KubeVirt が公開している機能は限られているからです。しかし、KubeVirt は開発者向けにいくつかのバックドアを提供しており、深いカスタマイズ要件に使用することができます。

1. libvirt ログの設定変更#

時々、libvirtd のログを確認したい場合がありますが、virt-launcher Pod に入って libvirtd のログを変更して libvirtd プロセスを再起動すると、virt-launcher-monitor にとって libvirtd プロセスが停止したということは仮想マシンが停止したことを意味します。

KubeVirt は libvirtd ログの設定を変更するための 2 つの方法を提供しています:

  1. KubeVirt CR で virtLauncher に対してlogVerbosityを 5 以上に設定すると、virt-launcher Pod のログに libvirt のログが表示されます。以下のように設定します:
apiVersion: kubevirt.io/v1
kind: KubeVirt
metadata:
  name: kubevirt
  namespace: kubevirt
spec:
  configuration:
    developerConfiguration:
      logVerbosity:
        virtLauncher: 2
        virtHandler: 3
        virtController: 4
        virtAPI: 5
        virtOperator: 6

変更後、コンポーネントの Pod を再起動する必要はありません。この設定はホットリロードされます。ただし、virt-launcher Pod は動的に変更できません。

  1. VMI にkubevirt.io/libvirt-log-filtersというアノテーションを追加します。libvirt のログフィルタを直接指定することができます。詳細な設定ルールについては、debug logsを参照してください。

2. libvirt ドメイン XML の変更#

KubeVirt の VMI 仕様で公開されているプロパティは、ほとんどの使用要件を満たすことができますが、サポートされていないものもあります。たとえば、clockoffset属性を localtime に設定することはサポートされていません。

しかし、KubeVirt は hooksidecar メカニズムを提供しています。virt-launcher 内で VMI 仕様に基づいてドメイン XML をレンダリングした後、登録したフックを呼び出してドメイン XML を任意に変更する機会を与えます。この時点で、ドメイン XML を自由に変更することができます。

もし自分自身で hooksidecar を開発したい場合は、KubeVirt リポジトリのcmd/example-*-hook-sidecarで例を見つけることができます。

hooksidecar は、sidecar コンテナとして virt-launcher Pod 内で実行され、gRPC unix を介して virt-launcher と対話します。

3. 継続的な更新中#

...

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。