如何获取nodeSelector的JsonPath

问题描述 投票:4回答:1

有没有办法从kubectl命令行获取nodeSelector关键字的JsonPath?

如果我运行kubectl explain deployment --recursive命令,它将输出所有关键字的列表:

apiVersion  <string>
kind    <string>
metadata    <Object>
   annotations  <map[string]string>
   clusterName  <string>
   creationTimestamp    <string>
   deletionGracePeriodSeconds   <integer>
   deletionTimestamp    <string>
   finalizers   <[]string>
   generateName <string>
   generation   <integer>
   initializers <Object>
      pending   <[]Object>
         name   <string>
      result    <Object>
         apiVersion <string>
         code   <integer>
         details    <Object>
            causes  <[]Object>
               field    <string>
               message  <string>
               reason   <string>
            group   <string>
            kind    <string>
...

这个列表很长,并且像nodeSelector这样的关键词很难看出JsonPath是spec.template.spec.nodeSelector

kubernetes kubectl
1个回答
0
投票

其中一种方法是将输出转换为正确的YAML格式,如下所示:(我已经完成了几次替换和删除以获得此输出。不幸的是,kubectl没有实现它的本机选项。)

   apiVersion: 'string'
   kind: 'string'
   metadata:
      annotations: 'map[string]string'
      clusterName: 'string'
      creationTimestamp: 'string'
      deletionGracePeriodSeconds: 'integer'
      deletionTimestamp: 'string'
      finalizers: '[]string'
      generateName: 'string'
      generation: 'integer'
      initializers:
         pending:
            name: 'string'
         result:
            apiVersion: 'string'
            code: 'integer'
            details:
               causes:
                  field: 'string'
                  message: 'string'
                  reason: 'string'
...

现在您可以应用this stackoverflow问题的解决方案来获得扁平化输出,如下所示:

{
  "apiVersion": "string",
  "kind": "string",
  "metadata.annotations": "map[string]string",
  "metadata.clusterName": "string",
  "metadata.creationTimestamp": "string",
  "metadata.deletionGracePeriodSeconds": "integer",
  "metadata.deletionTimestamp": "string",
  "metadata.finalizers": "[]string",
  "metadata.generateName": "string",
  "metadata.generation": "integer",
  "metadata.initializers.pending.name": "string",
  "metadata.initializers.result.apiVersion": "string",
  "metadata.initializers.result.code": "integer",
  "metadata.initializers.result.details.causes.field": "string",
  "metadata.initializers.result.details.causes.message": "string",
  "metadata.initializers.result.details.causes.reason": "string",
...
}

然后,您可以筛选或搜索结果以获取所需的值。

© www.soinside.com 2019 - 2024. All rights reserved.