I am using the following query to calculate the cost of nodes in our GKE cluster (new lines added for readability)
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
It WORKS if the cluster has preemptible nodes because there is at least one node with label_cloud_google_com_gke_preemptible = "true"
and hence the first sum operator returns a value.
It FAILS when the cluster has NO preemtible nodes because there is no node with label_cloud_google_com_gke_preemptible = "true"
and hence the first sum returns no value
Is it possible to modify the query so that the first sum returns a 0 value instead?
You can use or
to insert a value if one is not present:
(
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