10.4. 监控虚拟机健康状况

使用此流程来创建存活度和就绪度探测以监控虚拟机健康状况。

10.4.1. 关于存活度和就绪度探测

当 VirtualMachineInstance (VMI) 失败时,存活度探测 会停止 VMI。然后控制器(比如 VirtualMachine)会生成其他 VMI,恢复虚拟机响应度。

Readiness probes 可以告诉服务和端点,VirtualMachineInstance 是否准备好从服务接收网络流量。如果就绪度探测失败,则 VirtualMachineInstance 会从适用的端点中删除,直到探测恢复为止。

10.4.2. 定义 HTTP 存活度探针

此流程提供了定义 HTTP 存活度探测的示例配置文件。

流程

  1. 自定义 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
  2. 运行以下命令来创建 VirtualMachineInstance:

    $ oc create -f <file name>.yaml

10.4.3. 定义 TCP 存活度探测

此流程提供了定义 TCP 存活度探测的示例配置文件。

流程

  1. 自定义 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
  2. 运行以下命令来创建 VirtualMachineInstance:

    $ oc create -f <file name>.yaml

10.4.4. 定义就绪度探测

此流程提供了定义就绪度探测的示例配置文件。

流程

  1. 自定义 YAML 配置文件以创建就绪度探测。以类似存活度探测的方式配置就绪度探测。然而,请注意此示例中的以下不同之处:

    • 就绪度探测使用不同的 spec 名称进行保存。例如,您将就绪度探测创建为 spec.readinessProbe,而不是 spec.livenessProbe.<type-of-probe>
    • 在创建就绪度探测时,如果预计探测会出现多次成功或失败的情况,则可以选择设置 failureThresholdsuccessThreshold,以在 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
  2. 运行以下命令来创建 VirtualMachineInstance:

    $ oc create -f <file name>.yaml

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。