13.10. 运行集群检查


OpenShift Virtualization 4.11 包含一个诊断框架,用于运行预定义的检查,可用于集群维护和故障排除。

重要

OpenShift Container Platform 集群检查框架只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

13.10.1. 关于 OpenShift Container Platform 集群检查框架

checkup 是一个自动测试工作负载,可让您验证特定的集群功能是否按预期工作。集群检查框架使用原生 Kubernetes 资源来配置和执行检查。

通过使用预定义的检查,集群管理员可以提高集群可维护性,排除意外行为,最小化错误并节省时间。还可以检查结果并与专家分享,以进一步进行分析。供应商可以编写和发布它们所提供的功能或服务的检查,并验证其客户环境是否已正确配置。

在集群中运行预定义的检查涉及为框架设置命名空间和服务帐户,为服务帐户创建 ClusterRoleClusterRoleBinding 对象,启用检查权限,以及创建输入配置映射和检查作业。您可以多次运行检查。

重要

您必须始终:

  • 在应用前,请验证检查镜像是否来自可信源。
  • 在创建 ClusterRole 对象前,检查检查权限。
  • 验证配置映射中 ClusterRole 对象的名称。这是因为框架会自动将这些权限绑定到检查实例。

13.10.2. 检查二级网络上的虚拟机的网络连接和延迟

作为集群管理员,您可以使用预定义的检查来验证附加到二级网络接口的虚拟机(VM)之间的网络连接和测量延迟。

要第一次运行检查,请按照以下步骤执行。

如果您之前已运行检查,请跳至步骤 5 步,因为安装框架的步骤并不需要启用检查权限。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您以具有 cluster-admin 角色的用户身份登录到集群。
  • 集群至少有两个 worker 节点。
  • Multus Container Network Interface (CNI) 插件已安装在集群中。
  • 为命名空间配置了网络附加定义。

流程

  1. 创建包含设置框架的资源的配置文件。这包括用于框架的命名空间和服务帐户,以及 ClusterRoleClusterRoleBinding 对象来为服务帐户定义权限。

    例 13.3. 框架清单文件示例

    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: kiagnose
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: kiagnose
      namespace: kiagnose
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: kiagnose
    rules:
      - apiGroups: [ "" ]
        resources: [ "configmaps" ]
        verbs:
          - get
          - list
          - create
          - update
          - patch
      - apiGroups: [ "" ]
        resources: [ "namespaces" ]
        verbs:
          - get
          - list
          - create
          - delete
          - watch
      - apiGroups: [ "" ]
        resources: [ "serviceaccounts" ]
        verbs:
          - get
          - list
          - create
      - apiGroups: [ "rbac.authorization.k8s.io" ]
        resources:
          - roles
          - rolebindings
          - clusterrolebindings
        verbs:
          - get
          - list
          - create
          - delete
      - apiGroups: [ "rbac.authorization.k8s.io" ]
        resources:
          - clusterroles
        verbs:
          - get
          - list
          - create
          - bind
      - apiGroups: [ "batch" ]
        resources: [ "jobs" ]
        verbs:
          - get
          - list
          - create
          - delete
          - watch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kiagnose
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: kiagnose
    subjects:
      - kind: ServiceAccount
        name: kiagnose
        namespace: kiagnose
    ...
  2. 应用框架清单:

    $ oc apply -f <framework_manifest>.yaml
  3. 创建一个包含 ClusterRoleRole 对象的配置文件,并带有检查集群访问权限所需的权限:

    集群角色清单文件示例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: kubevirt-vm-latency-checker
    rules:
    - apiGroups: ["kubevirt.io"]
      resources: ["virtualmachineinstances"]
      verbs: ["get", "create", "delete"]
    - apiGroups: ["subresources.kubevirt.io"]
      resources: ["virtualmachineinstances/console"]
      verbs: ["get"]
    - apiGroups: ["k8s.cni.cncf.io"]
      resources: ["network-attachment-definitions"]
      verbs: ["get"]

  4. 应用检查角色清单:

    $ oc apply -f <latency_roles>.yaml
  5. 创建包含检查的输入参数的 ConfigMap 清单。配置映射提供运行检查的框架输入并存储检查的结果。

    输入配置映射示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: kubevirt-vm-latency-checkup
      namespace: kiagnose
    data:
      spec.image: registry.redhat.io/container-native-virtualization/vm-network-latency-checkup:v4.11.0
      spec.timeout: 10m
      spec.clusterRoles: |
        kubevirt-vmis-manager
      spec.param.network_attachment_definition_namespace: "default" 1
      spec.param.network_attachment_definition_name: "bridge-network" 2
      spec.param.max_desired_latency_milliseconds: "10" 3
      spec.param.sample_duration_seconds: "5" 4

    1
    NetworkAttachmentDefinition 对象所在的命名空间。
    2
    NetworkAttachmentDefinition 对象的名称。
    3
    可选:虚拟机之间所需最大延迟(以毫秒为单位)。如果测量的延迟超过这个值,则检查会失败。
    4
    可选:延迟检查的持续时间,以秒为单位。
  6. 在框架的命名空间中创建配置映射:

    $ oc apply -f <latency_config_map>.yaml
  7. 创建一个 Job 对象以运行检查:

    任务清单示例

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: kubevirt-vm-latency-checkup
      namespace: kiagnose
    spec:
      backoffLimit: 0
      template:
        spec:
          serviceAccount: kiagnose
          restartPolicy: Never
          containers:
            - name: framework
              image: registry.redhat.io/container-native-virtualization/checkup-framework:v4.11.0
              env:
                - name: CONFIGMAP_NAMESPACE
                  value: kiagnose
                - name: CONFIGMAP_NAME
                  value: kubevirt-vm-latency-checkup

  8. 应用 Job 清单。检查程序使用 ping 程序来验证连接和测量延迟。

    $ oc apply -f <latency_job>.yaml
  9. 等待作业完成:

    $ oc wait --for=condition=complete --timeout=10m job.batch/kubevirt-vm-latency-checkup -n kiagnose
  10. 通过检索 ConfigMap 对象的状态来查看延迟检查的结果。如果测量的延迟大于 spec.param.max_desired_latency_seconds 属性的值,则检查过程会失败并返回错误。

    $ oc get configmap kubevirt-vm-latency-checkup -n kiagnose -o yaml

    输出配置映射(成功)示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: kubevirt-vm-latency-checkup
      namespace: kiagnose
    ...
      status.succeeded: "true"
      status.failureReason: ""
      status.result.minLatencyNanoSec: 2000
      status.result.maxLatencyNanoSec: 3000
      status.result.avgLatencyNanoSec: 2500
      status.results.measurementDurationSec: 300
    ...

  11. 删除框架并检查之前创建的资源。这包括作业、配置映射、集群角色和框架清单文件。

    注意

    如果您计划运行另一个检查,请不要删除框架和集群角色清单文件。

    $ oc delete -f <file_name>.yaml

13.10.3. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.