13.10. 运行集群检查
OpenShift Virtualization 4.11 包含一个诊断框架,用于运行预定义的检查,可用于集群维护和故障排除。
OpenShift Container Platform 集群检查框架只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
13.10.1. 关于 OpenShift Container Platform 集群检查框架
checkup 是一个自动测试工作负载,可让您验证特定的集群功能是否按预期工作。集群检查框架使用原生 Kubernetes 资源来配置和执行检查。
通过使用预定义的检查,集群管理员可以提高集群可维护性,排除意外行为,最小化错误并节省时间。还可以检查结果并与专家分享,以进一步进行分析。供应商可以编写和发布它们所提供的功能或服务的检查,并验证其客户环境是否已正确配置。
在集群中运行预定义的检查涉及为框架设置命名空间和服务帐户,为服务帐户创建 ClusterRole
和 ClusterRoleBinding
对象,启用检查权限,以及创建输入配置映射和检查作业。您可以多次运行检查。
您必须始终:
- 在应用前,请验证检查镜像是否来自可信源。
-
在创建
ClusterRole
对象前,检查检查权限。 -
验证配置映射中
ClusterRole
对象的名称。这是因为框架会自动将这些权限绑定到检查实例。
13.10.2. 检查二级网络上的虚拟机的网络连接和延迟
作为集群管理员,您可以使用预定义的检查来验证附加到二级网络接口的虚拟机(VM)之间的网络连接和测量延迟。
要第一次运行检查,请按照以下步骤执行。
如果您之前已运行检查,请跳至步骤 5 步,因为安装框架的步骤并不需要启用检查权限。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您以具有
cluster-admin
角色的用户身份登录到集群。 - 集群至少有两个 worker 节点。
- Multus Container Network Interface (CNI) 插件已安装在集群中。
- 为命名空间配置了网络附加定义。
流程
创建包含设置框架的资源的配置文件。这包括用于框架的命名空间和服务帐户,以及
ClusterRole
和ClusterRoleBinding
对象来为服务帐户定义权限。例 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 ...
应用框架清单:
$ oc apply -f <framework_manifest>.yaml
创建一个包含
ClusterRole
和Role
对象的配置文件,并带有检查集群访问权限所需的权限:集群角色清单文件示例
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"]
应用检查角色清单:
$ oc apply -f <latency_roles>.yaml
创建包含检查的输入参数的
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
在框架的命名空间中创建配置映射:
$ oc apply -f <latency_config_map>.yaml
创建一个
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
应用
Job
清单。检查程序使用 ping 程序来验证连接和测量延迟。$ oc apply -f <latency_job>.yaml
等待作业完成:
$ oc wait --for=condition=complete --timeout=10m job.batch/kubevirt-vm-latency-checkup -n kiagnose
通过检索
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 ...
删除框架并检查之前创建的资源。这包括作业、配置映射、集群角色和框架清单文件。
注意如果您计划运行另一个检查,请不要删除框架和集群角色清单文件。
$ oc delete -f <file_name>.yaml