10.4. 监控虚拟机健康状况
使用此流程来创建存活度和就绪度探测以监控虚拟机健康状况。
10.4.1. 关于存活度和就绪度探测
当 VirtualMachineInstance (VMI) 失败时,存活度探测 会停止 VMI。然后控制器(比如 VirtualMachine)会生成其他 VMI,恢复虚拟机响应度。
Readiness probes 可以告诉服务和端点,VirtualMachineInstance 是否准备好从服务接收网络流量。如果就绪度探测失败,则 VirtualMachineInstance 会从适用的端点中删除,直到探测恢复为止。
10.4.2. 定义 HTTP 存活度探针
此流程提供了定义 HTTP 存活度探测的示例配置文件。
流程
自定义 YAML 配置文件以创建 HTTP 存活度探测,请参考以下示例代码块。在此例中:
-
您使用
spec.livenessProbe.httpGet
配置探测,它会在初始延迟120
秒后查询 VirtualMachineInstance 的端口1500
。 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 存活度探测
此流程提供了定义 TCP 存活度探测的示例配置文件。
流程
自定义 YAML 配置文件以创建 TCP 存活度探测,请参考以下示例代码块。在此例中:
-
您使用
spec.livenessProbe.tcpSocket
配置探测,它会在初始延迟120
秒后查询 VirtualMachineInstance 的端口1500
。 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. 定义就绪度探测
此流程提供了定义就绪度探测的示例配置文件。
流程
自定义 YAML 配置文件以创建就绪度探测。以类似存活度探测的方式配置就绪度探测。然而,请注意此示例中的以下不同之处:
-
就绪度探测使用不同的 spec 名称进行保存。例如,您将就绪度探测创建为
spec.readinessProbe
,而不是spec.livenessProbe.<type-of-probe>
。 在创建就绪度探测时,如果预计探测会出现多次成功或失败的情况,则可以选择设置
failureThreshold
和successThreshold
,以在ready
状态和non-ready
状态之间切换。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
-
就绪度探测使用不同的 spec 名称进行保存。例如,您将就绪度探测创建为
运行以下命令来创建 VirtualMachineInstance:
$ oc create -f <file name>.yaml