{
  "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.",
  "properties": {
    "nodeSelectorTerms": {
      "description": "Required. A list of node selector terms. The terms are ORed.",
      "items": {
        "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.",
        "properties": {
          "matchExpressions": {
            "description": "A list of node selector requirements by node's labels.",
            "items": {
              "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
              "properties": {
                "key": {
                  "description": "The label key that the selector applies to.",
                  "type": "string"
                },
                "operator": {
                  "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n",
                  "type": "string"
                },
                "values": {
                  "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
                  "items": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                }
              },
              "required": [
                "key",
                "operator"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ]
          },
          "matchFields": {
            "description": "A list of node selector requirements by node's fields.",
            "items": {
              "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
              "properties": {
                "key": {
                  "description": "The label key that the selector applies to.",
                  "type": "string"
                },
                "operator": {
                  "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n",
                  "type": "string"
                },
                "values": {
                  "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.",
                  "items": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                }
              },
              "required": [
                "key",
                "operator"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": [
          "object",
          "null"
        ],
        "x-kubernetes-map-type": "atomic"
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "required": [
    "nodeSelectorTerms"
  ],
  "type": "object",
  "x-kubernetes-map-type": "atomic",
  "$schema": "http://json-schema.org/schema#"
}