我使用以下查询来计算GKE集群中节点的成本(为了便于阅读而添加了新行)
sum(
kube_node_status_capacity_cpu_cores * on(node) group_left(label_cloud_google_com_gke_nodepool)
kube_node_labels{
label_cloud_google_com_gke_preemptible = "true"
}
) * 5.10 +
sum(
kube_node_status_capacity_cpu_cores * on(node) group_left(label_cloud_google_com_gke_nodepool)
kube_node_labels{
label_cloud_google_com_gke_preemptible = ""
}
) * 16.95
如果集群具有可抢占节点,则它起作用,因为至少有一个节点具有label_cloud_google_com_gke_preemptible = "true"
,因此第一个sum运算符返回一个值。
当群集没有可预留的节点时它会失败,因为没有带label_cloud_google_com_gke_preemptible = "true"
的节点,因此第一个sum没有返回值
是否可以修改查询,以便第一个和返回0值?
如果不存在,您可以使用or
插入值:
(
sum(
kube_node_status_capacity_cpu_cores
* on(node) group_left(label_cloud_google_com_gke_nodepool)
kube_node_labels{label_cloud_google_com_gke_preemptible = "true"}
) * 5.10
or
vector(0)
)
+
sum(
kube_node_status_capacity_cpu_cores
* on(node) group_left(label_cloud_google_com_gke_nodepool)
kube_node_labels{label_cloud_google_com_gke_preemptible = ""}
) * 16.95