查询 Compute Engine 成本时,我得到一条工作负载名称为空的记录。
k8s 之外还有哪些服务消耗 Compute Engine 或者 k8s 中可能存在未命名的工作负载?
我如何进一步调查这笔费用?
SELECT
DATE(usage_start_time) day,
ROUND(SUM(cost),2) AS sum_cost,
labels.value AS workload,
FROM
my_billing_table
LEFT JOIN
UNNEST(labels) AS labels
ON
labels.key = "k8s-workload-name"
WHERE
DATE(usage_start_time) >= DATE_ADD(CURRENT_DATE,INTERVAL -2 DAY)
AND DATE(partition_time) >= DATE_ADD(CURRENT_DATE,INTERVAL -2 DAY)
AND project.name = 'my_project'
AND service.description = 'Compute Engine'
GROUP BY
1,
3
ORDER BY
1 DESC
请按照以下步骤操作,可能会对您有所帮助:
根据 查看 GKE 集群成本 :
“如果 GKE 无法确定资源的成本分配,导出将包含以下值之一:
goog-k8s-unknown:Cloud Billing 无法处理 SKU。预配新的 Compute Engine 实例时可能会发生这种情况。在节点启动和关闭期间,您可能会遇到一些 goog-k8s-unknown 值,例如当 GKE 自动缩放集群时。
goog-k8s-unsupported-sku:GKE 成本分配不支持此 SKU。将其视为与
根据标签传播:手动创建的没有 K8s 的虚拟机不会使用 k8s-workload-name 进行标记,这可能是工作负载名称为空的原因。
检查非 Kubernetes 服务:不使用 Kubernetes 的其他服务(例如 Compute Engine VM 实例)可能正在使用资源。您可以按“k8s-workload-name”以外的标签进行过滤,以查看这些虚拟机是否正在消耗资源。
进一步调查:
借助 gcloud 计算实例描述命令检查实例名称列表,该命令会显示有关特定丢失的 Compute Engine 实例的数据,并查找可能指示实例用途的任何自定义元数据标签。
在日志记录和监控仪表板的帮助下,了解这些成本期间出现的任何错误可以帮助更好地理解。
查询其他标签:修改查询以检查是否存在其他标签,并确定哪些工作负载没有“k8s-workload-name”标签但仍在消耗资源。
确保工作负载标记:Kubernetes 工作负载可能未正确标记。您可以检查 Kubernetes 集群配置,以确保所有工作负载都正确标记为“k8s-workload-name”标签。
请参阅详细数据导出结构,您还可以使用 GCP 成本分配功能,该功能可以帮助您找到未归属的 Compute Engine 成本的来源查看集群成本的详细细分以了解更多详细信息。