如何调试 Kubernetes 中的未知字段错误?

How to debug Unknown field error in Kubernetes?

这可能是菜鸟问题。我不太精通kubernetes。我将此添加到我的 deployment.yaml

ad.datadoghq.com/helm-chart.check_names: |
          ["openmetrics"]
ad.datadoghq.com/helm-chart.init_configs: |
          [{}]
ad.datadoghq.com/helm-chart.instances: |
          [
            {
              "prometheus_url": "http://%%host%%:7071/metrics",
              "namespace": "custom-metrics",
              "metrics": [ "jvm*" ]
            }
          ]

但是我得到这个错误

error validating data: [ValidationError(Deployment.spec.template.metadata): unknown field "ad.datadoghq.com/helm-chart.check_names" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta, ValidationError(Deployment.spec.template.metadata)

这个错误是什么意思?这是否意味着我需要在某处定义 ad.datadoghq.com/helm-chart.check_names ?如果有,在哪里?

您可能将其添加到错误的位置 - 根据您的错误消息 - 您将其添加到 Deployment.spec.template.metadata

您可以检查 official helm deployment template and this example on documentation - ad.datadoghq.com/helm-chart.check_names 等值是注释,因此需要在路径 Deployment.spec.template.metadata.annotations

下定义这些值

annotations: a map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about this object (see the annotations docs)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: datadog-cluster-agent
  namespace: default
spec:
  selector:
    matchLabels:
      app: datadog-cluster-agent
  template:
    metadata: # <- not directly under 'metadata'
      labels:
        app: datadog-cluster-agent
      name: datadog-agent
      annotations: # <- add here
        ad.datadoghq.com/datadog-cluster-agent.check_names: '["prometheus"]'
        ad.datadoghq.com/datadog-cluster-agent.init_configs: '[{}]'
        ad.datadoghq.com/datadog-cluster-agent.instances: '[{"prometheus_url": "http://%%host%%:5000/metrics","namespace": "datadog.cluster_agent","metrics": ["go_goroutines","go_memstats_*","process_*","api_requests","datadog_requests","external_metrics", "cluster_checks_*"]}]'
    spec: