10.4. 仮想マシンの正常性のモニタリング
以下の手順を使用して liveness および readiness プローブを作成し、仮想マシンの正常性監視します。
10.4.1. liveness および readiness プローブ
VirtualMachineInstance (VMI) が失敗すると、liveness プローブは VMI を停止します。次に、VirtualMachine などのコントローラーが他の VMI を起動し、仮想マシンの応答を復元します。
readiness プローブは、サービスとエンドポイントに対して VirtualMachineInstance がサービスからトラフィックを受信できることを示します。readiness プローブが失敗すると、VirtualMachineInstance はプローブが復旧するまで、該当のエンドポイントから削除されます。
10.4.2. HTTP liveness プローブの定義
以下の手順では、HTTP liveness プローブを定義する設定ファイルの例について説明します。
手順
以下のコードブロックをサンプルとして使用し、YAML 設定ファイルをカスタマイズして HTTP liveness プローブを作成します。この例では、以下のようになります。
-
初回の
120
秒の遅延後に VirtualMachineInstance のポート1500
をクエリーするspec.livenessProbe.httpGet
を使用してプローブを設定します。 VirtualMachineInstance は、
cloud-init
を使用して、ポート1500
に最小限の HTTP サーバーをインストールし、実行します。apiVersion: kubevirt.io/v1alpha3 kind: VirtualMachineInstance metadata: labels: special: vmi-fedora name: vmi-fedora spec: domain: devices: disks: - disk: bus: virtio name: containerdisk - disk: bus: virtio name: cloudinitdisk resources: requests: memory: 1024M livenessProbe: initialDelaySeconds: 120 periodSeconds: 20 httpGet: port: 1500 timeoutSeconds: 10 terminationGracePeriodSeconds: 0 volumes: - name: containerdisk registryDisk: image: kubevirt/fedora-cloud-registry-disk-demo - cloudInitNoCloud: userData: |- #cloud-config password: fedora chpasswd: { expire: False } bootcmd: - setenforce 0 - dnf install -y nmap-ncat - systemd-run --unit=httpserver nc -klp 1500 -e '/usr/bin/echo -e HTTP/1.1 200 OK\\n\\nHello World!' name: cloudinitdisk
-
初回の
以下のコマンドを実行して VirtualMachineInstance を作成します。
$ oc create -f <file name>.yaml
10.4.3. TCP liveness プローブの定義
以下の手順では、TCP liveness プローブを定義する設定ファイルの例について説明します。
手順
このコードブロックをサンプルとして使用し、YAML 設定ファイルをカスタマイズして TCP liveness プローブを作成します。この例では、以下のようになります。
-
初回の
120
秒の遅延後に VirtualMachineInstance のポート1500
をクエリーするspec.livenessProbe.tcpSocket
を使用してプローブを設定します。 VirtualMachineInstance は、
cloud-init
を使用して、ポート1500
に最小限の HTTP サーバーをインストールし、実行します。apiVersion: kubevirt.io/v1alpha3 kind: VirtualMachineInstance metadata: labels: special: vmi-fedora name: vmi-fedora spec: domain: devices: disks: - disk: bus: virtio name: containerdisk - disk: bus: virtio name: cloudinitdisk resources: requests: memory: 1024M livenessProbe: initialDelaySeconds: 120 periodSeconds: 20 tcpSocket: port: 1500 timeoutSeconds: 10 terminationGracePeriodSeconds: 0 volumes: - name: containerdisk registryDisk: image: kubevirt/fedora-cloud-registry-disk-demo - cloudInitNoCloud: userData: |- #cloud-config password: fedora chpasswd: { expire: False } bootcmd: - setenforce 0 - dnf install -y nmap-ncat - systemd-run --unit=httpserver nc -klp 1500 -e '/usr/bin/echo -e HTTP/1.1 200 OK\\n\\nHello World!' name: cloudinitdisk
-
初回の
以下のコマンドを実行して VirtualMachineInstance を作成します。
$ oc create -f <file name>.yaml
10.4.4. readiness プローブの定義
以下の手順では、readiness プローブを定義する設定ファイルの例について説明します。
手順
YAML 設定ファイルをカスタマイズして readiness プローブを作成します。readiness プローブは liveness プローブと同じように設定されます。ただし、この例では以下の違いに注意してください。
-
readiness プローブは、異なる仕様名を使用して保存されます。たとえば、readiness プローブを
spec.livenessProbe.<type-of-probe>
としてではなく、spec.readinessProbe
として作成します。 readiness プローブを作成する場合、プローブが複数回失敗または成功する場合に備えて
ready
とnon-ready
状態の間で切り換えられるようにfailureThreshold
およびsuccessThreshold
をオプションで設定します。apiVersion: kubevirt.io/v1alpha3 kind: VirtualMachineInstance metadata: labels: special: vmi-fedora name: vmi-fedora spec: domain: devices: disks: - disk: bus: virtio name: containerdisk - disk: bus: virtio name: cloudinitdisk resources: requests: memory: 1024M readinessProbe: httpGet: port: 1500 initialDelaySeconds: 120 periodSeconds: 20 timeoutSeconds: 10 failureThreshold: 3 successThreshold: 3 terminationGracePeriodSeconds: 0 volumes: - name: containerdisk registryDisk: image: kubevirt/fedora-cloud-registry-disk-demo - cloudInitNoCloud: userData: |- #cloud-config password: fedora chpasswd: { expire: False } bootcmd: - setenforce 0 - dnf install -y nmap-ncat - systemd-run --unit=httpserver nc -klp 1500 -e '/usr/bin/echo -e HTTP/1.1 200 OK\\n\\nHello World!' name: cloudinitdisk
-
readiness プローブは、異なる仕様名を使用して保存されます。たとえば、readiness プローブを
以下のコマンドを実行して VirtualMachineInstance を作成します。
$ oc create -f <file name>.yaml