Kubernetes部署Jaeger时提示unknown field "template"错误如何解决?
Jaeger CR创建报错
unknown field "template"解决方案 报错根因
你使用的是Jaeger Operator定义的Jaeger自定义资源(CR),其spec字段规范和Kubernetes原生Deployment完全不同,spec.template是原生Deployment的字段,在Jaeger CR的官方规范中不存在,因此API Server在校验资源配置时会直接抛出字段不存在的错误。
正确配置规则
Jaeger Operator会根据你配置的spec字段自动生成对应的Deployment、Service、ConfigMap等资源,不需要手动定义Pod模板:
- 存储相关配置统一放到
spec.storage字段下,Operator会自动注入对应环境变量到Jaeger各组件 - 自定义标签、环境变量、资源限制等配置,需要对应到
spec.collector、spec.query、spec.agent等具体组件的配置下
修正后的配置示例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: simple-prod labels: app: jaeger spec: strategy: production collector: maxReplicas: 5 # 给collector组件的资源加自定义标签 metadata: labels: app: jaeger resources: limits: cpu: 100m memory: 128Mi # 给query组件加自定义标签 query: metadata: labels: app: jaeger # 存储配置,Operator自动注入对应环境变量 storage: type: elasticsearch options: es: server-urls: http://elasticsearch:9200 tags-as-fields-all: "true"
补充说明
- production部署策略下,Jaeger会拆分部署collector、query等独立组件,16686是query组件的默认端口,Operator会自动创建对应Service暴露端口,无需手动配置
- 如果需要给所有组件添加统一的公共标签,可以配置
spec.commonLabels字段,无需逐个组件配置
内容的提问来源于stack exchange,提问作者Kim sung
相关产品推荐
相关产品推荐

