15.4. Node Observability Operator 脚本
脚本允许您使用当前的 Node Observability Operator 和 Node Observability 代理运行预先配置的 bash 脚本。
这些脚本监控 CPU 负载、内存压力和 worker 节点问题等关键指标。它们还收集 sar 报告和自定义性能指标。
15.4.1. 为脚本创建 Node Observability 自定义资源
在运行脚本前,您必须创建并运行 NodeObservability
自定义资源 (CR)。运行 NodeObservability
CR 时,它会在与 nodeSelector
标签匹配的计算节点上以脚本模式启用代理。
先决条件
- 已安装 Node Observability Operator。
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用
cluster-admin
权限访问集群。
流程
运行以下命令登录到 OpenShift Container Platform 集群:
$ oc login -u kubeadmin https://<host_name>:6443
运行以下命令切换到
node-observability-operator
命名空间:$ oc project node-observability-operator
创建名为
nodeobservability.yaml
的文件,其中包含以下内容:apiVersion: nodeobservability.olm.openshift.io/v1alpha2 kind: NodeObservability metadata: name: cluster 1 spec: nodeSelector: kubernetes.io/hostname: <node_hostname> 2 type: scripting 3
运行以下命令来创建
NodeObservability
CR:$ oc apply -f nodeobservability.yaml
输出示例
nodeobservability.olm.openshift.io/cluster created
运行以下命令,检查
NodeObservability
CR 的状态:$ oc get nob/cluster -o yaml | yq '.status.conditions'
输出示例
conditions: conditions: - lastTransitionTime: "2022-07-05T07:33:54Z" message: 'DaemonSet node-observability-ds ready: true NodeObservabilityScripting ready: true' reason: Ready status: "True" type: Ready
当
reason
为Ready
,status
为"True"
时代表NodeObservability
CR 运行完成。
15.4.2. 配置 Node Observability Operator 脚本
先决条件
- 已安装 Node Observability Operator。
-
您已创建了
NodeObservability
自定义资源(CR)。 -
您可以使用
cluster-admin
权限访问集群。
流程
创建一个名为
nodeobservabilityrun-script.yaml
的文件,其中包含以下内容:apiVersion: nodeobservability.olm.openshift.io/v1alpha2 kind: NodeObservabilityRun metadata: name: nodeobservabilityrun-script namespace: node-observability-operator spec: nodeObservabilityRef: name: cluster type: scripting
重要您只能请求以下脚本:
-
metrics.sh
-
network-metrics.sh
(使用monitor.sh
)
-
使用以下命令创建
NodeObservabilityRun
资源来触发脚本:$ oc apply -f nodeobservabilityrun-script.yaml
运行以下命令,查看
NodeObservabilityRun
脚本的状态:$ oc get nodeobservabilityrun nodeobservabilityrun-script -o yaml | yq '.status.conditions'
输出示例
Status: Agents: Ip: 10.128.2.252 Name: node-observability-agent-n2fpm Port: 8443 Ip: 10.131.0.186 Name: node-observability-agent-wcc8p Port: 8443 Conditions: Conditions: Last Transition Time: 2023-12-19T15:10:51Z Message: Ready to start profiling Reason: Ready Status: True Type: Ready Last Transition Time: 2023-12-19T15:11:01Z Message: Profiling query done Reason: Finished Status: True Type: Finished Finished Timestamp: 2023-12-19T15:11:01Z Start Timestamp: 2023-12-19T15:10:51Z
当
Status
为True
,Type
为Finished
时代表脚本完成。运行以下 bash 脚本,从容器的 root 路径检索脚本数据:
#!/bin/bash RUN=$(oc get nodeobservabilityrun --no-headers | awk '{print $1}') for a in $(oc get nodeobservabilityruns.nodeobservability.olm.openshift.io/${RUN} -o json | jq .status.agents[].name); do echo "agent ${a}" agent=$(echo ${a} | tr -d "\"\'\`") base_dir=$(oc exec "${agent}" -c node-observability-agent -- bash -c "ls -t | grep node-observability-agent" | head -1) echo "${base_dir}" mkdir -p "/tmp/${agent}" for p in $(oc exec "${agent}" -c node-observability-agent -- bash -c "ls ${base_dir}"); do f="/${base_dir}/${p}" echo "copying ${f} to /tmp/${agent}/${p}" oc exec "${agent}" -c node-observability-agent -- cat ${f} > "/tmp/${agent}/${p}" done done