【问题标题】:How to get JsonPath for nodeSelector如何获取 nodeSelector 的 JsonPath
【发布时间】:2018-09-11 21:46:10
【问题描述】:

有没有办法从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】:

    其中一种方法是将输出转换为正确的 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",
    ...
    }
    

    然后您可以过滤或搜索结果以获取您想要的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2022-01-03
      • 2017-06-12
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多