Skip to main content
All operator CRDs

KafkaNodePool

Expand a field to see its description, example, and default behavior. Nested fields are grouped under their parent.

API group
krabka.io
Scope
Namespaced
Resource name
kafkanodepools
Short names
knp

Required fields must be present when their parent object exists. [] denotes an array item; {key} denotes a map value. status is written by the operator. Reconcile-time checks and runtime defaults can add requirements beyond the schema.

Examples are illustrative JSON values. Open “View JSON example” for an object or array. Adapt names, endpoints, and credentials to your cluster. Kubernetes applies schema defaults when the containing object exists. Runtime and omission notes describe operator behavior. Status examples show reported data.

Runtime notes and domain examples were reviewed against operator source at b409b56.

View the complete CRD manifest at 618d621
Example manifest

This example includes the required spec fields. Adapt its values and create any referenced resources before applying it.

apiVersion: krabka.io/v1alpha1
kind: KafkaNodePool
metadata:
  name: example
  namespace: default
  labels:
    krabka.io/cluster: my-cluster
spec:
  nodeIdStart: 0
  roles:
    - Controller
    - Broker

krabka.io/v1alpha1

Served API version · Storage version · 200 schema entries

Complete OpenAPI schema (JSON)
{
  "description": "Auto-generated derived type for KafkaNodePoolSpec via `CustomResource`",
  "properties": {
    "spec": {
      "description": "A pool of nodes, which are pods, that share the role, the image, and\nthe resources.\n\nThere is one `StatefulSet` for each pool. Clients address the pods\nthrough the shared headless `Service` that the parent `Kafka` owns.",
      "properties": {
        "clientDispatchQueueCapacity": {
          "description": "Kafka client request-dispatch queue capacity.",
          "format": "uint",
          "minimum": 1,
          "nullable": true,
          "type": "integer"
        },
        "clientFrameMax": {
          "description": "Maximum accepted Kafka client frame size.",
          "nullable": true,
          "type": "string"
        },
        "image": {
          "description": "Container image. The operator uses `--default-broker-image` when\nthis field is absent.",
          "nullable": true,
          "type": "string"
        },
        "nodeIdStart": {
          "description": "First node id. Pod ordinal `i` -> `node_id = nodeIdStart + i`.",
          "format": "int32",
          "maximum": 999999,
          "minimum": 0,
          "type": "integer"
        },
        "replicas": {
          "default": 1,
          "description": "Number of pods. Each ordinal gets one consecutive node id.",
          "format": "int32",
          "minimum": 1,
          "type": "integer"
        },
        "resources": {
          "description": "Broker container resources.",
          "nullable": true,
          "properties": {
            "claims": {
              "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.",
              "items": {
                "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.",
                "properties": {
                  "name": {
                    "description": "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.",
                    "type": "string"
                  },
                  "request": {
                    "description": "Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "limits": {
              "additionalProperties": {
                "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` <quantity>        ::= <signedNumber><suffix>\n\n\t(Note that <suffix> may be empty, from the \"\" case in <decimalSI>.)\n\n<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= \"+\" | \"-\" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n<decimalSI>       ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n<decimalExponent> ::= \"e\" <signedNumber> | \"E\" <signedNumber> ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.",
                "x-kubernetes-int-or-string": true
              },
              "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
              "type": "object"
            },
            "requests": {
              "additionalProperties": {
                "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` <quantity>        ::= <signedNumber><suffix>\n\n\t(Note that <suffix> may be empty, from the \"\" case in <decimalSI>.)\n\n<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= \"+\" | \"-\" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n<decimalSI>       ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n<decimalExponent> ::= \"e\" <signedNumber> | \"E\" <signedNumber> ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.",
                "x-kubernetes-int-or-string": true
              },
              "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
              "type": "object"
            }
          },
          "type": "object"
        },
        "roles": {
          "description": "Roles that each node in this pool has. The list must contain\n`Controller`, `Broker`, or both, without duplicates.",
          "items": {
            "enum": [
              "Controller",
              "Broker"
            ],
            "type": "string"
          },
          "maxItems": 2,
          "minItems": 1,
          "type": "array"
        },
        "storage": {
          "description": "Storage configuration. `None`, which means that the field is\nabsent, gives an emptyDir. That is the default. See [`Storage`].",
          "nullable": true,
          "properties": {
            "class": {
              "type": "string"
            },
            "deleteClaim": {
              "type": "boolean"
            },
            "size": {
              "type": "string"
            },
            "type": {
              "enum": [
                "Ephemeral",
                "PersistentClaim",
                "Jbod"
              ],
              "type": "string"
            },
            "volumes": {
              "items": {
                "properties": {
                  "class": {
                    "type": "string"
                  },
                  "id": {
                    "format": "int32",
                    "type": "integer"
                  },
                  "size": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "size"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "type"
          ],
          "type": "object"
        },
        "template": {
          "description": "Optional pod-level customization for every pod in this pool.",
          "nullable": true,
          "properties": {
            "affinity": {
              "description": "The operator copies this to `PodSpec.affinity`.",
              "nullable": true,
              "properties": {
                "nodeAffinity": {
                  "description": "Describes node affinity scheduling rules for the pod.",
                  "properties": {
                    "preferredDuringSchedulingIgnoredDuringExecution": {
                      "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.",
                      "items": {
                        "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).",
                        "properties": {
                          "preference": {
                            "description": "A node selector term, associated with the corresponding weight.",
                            "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.",
                                      "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"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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.",
                                      "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"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              }
                            },
                            "type": "object"
                          },
                          "weight": {
                            "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.",
                            "format": "int32",
                            "type": "integer"
                          }
                        },
                        "required": [
                          "preference",
                          "weight"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "requiredDuringSchedulingIgnoredDuringExecution": {
                      "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.",
                      "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.",
                                      "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"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "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.",
                                      "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"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              }
                            },
                            "type": "object"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "nodeSelectorTerms"
                      ],
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "podAffinity": {
                  "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).",
                  "properties": {
                    "preferredDuringSchedulingIgnoredDuringExecution": {
                      "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.",
                      "items": {
                        "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
                        "properties": {
                          "podAffinityTerm": {
                            "description": "Required. A pod affinity term, associated with the corresponding weight.",
                            "properties": {
                              "labelSelector": {
                                "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.",
                                "properties": {
                                  "matchExpressions": {
                                    "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                    "items": {
                                      "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                      "properties": {
                                        "key": {
                                          "description": "key is the label key that the selector applies to.",
                                          "type": "string"
                                        },
                                        "operator": {
                                          "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                          "type": "string"
                                        },
                                        "values": {
                                          "description": "values is 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. This array is replaced during a strategic merge patch.",
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "operator"
                                      ],
                                      "type": "object"
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                    "type": "object"
                                  }
                                },
                                "type": "object"
                              },
                              "matchLabelKeys": {
                                "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "mismatchLabelKeys": {
                                "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "namespaceSelector": {
                                "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.",
                                "properties": {
                                  "matchExpressions": {
                                    "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                    "items": {
                                      "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                      "properties": {
                                        "key": {
                                          "description": "key is the label key that the selector applies to.",
                                          "type": "string"
                                        },
                                        "operator": {
                                          "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                          "type": "string"
                                        },
                                        "values": {
                                          "description": "values is 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. This array is replaced during a strategic merge patch.",
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "operator"
                                      ],
                                      "type": "object"
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                    "type": "object"
                                  }
                                },
                                "type": "object"
                              },
                              "namespaces": {
                                "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "topologyKey": {
                                "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.",
                                "type": "string"
                              }
                            },
                            "required": [
                              "topologyKey"
                            ],
                            "type": "object"
                          },
                          "weight": {
                            "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.",
                            "format": "int32",
                            "type": "integer"
                          }
                        },
                        "required": [
                          "podAffinityTerm",
                          "weight"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "requiredDuringSchedulingIgnoredDuringExecution": {
                      "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.",
                      "items": {
                        "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running",
                        "properties": {
                          "labelSelector": {
                            "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.",
                            "properties": {
                              "matchExpressions": {
                                "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                "items": {
                                  "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                  "properties": {
                                    "key": {
                                      "description": "key is the label key that the selector applies to.",
                                      "type": "string"
                                    },
                                    "operator": {
                                      "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                      "type": "string"
                                    },
                                    "values": {
                                      "description": "values is 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. This array is replaced during a strategic merge patch.",
                                      "items": {
                                        "type": "string"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "matchLabels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "matchLabelKeys": {
                            "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "mismatchLabelKeys": {
                            "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "namespaceSelector": {
                            "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.",
                            "properties": {
                              "matchExpressions": {
                                "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                "items": {
                                  "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                  "properties": {
                                    "key": {
                                      "description": "key is the label key that the selector applies to.",
                                      "type": "string"
                                    },
                                    "operator": {
                                      "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                      "type": "string"
                                    },
                                    "values": {
                                      "description": "values is 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. This array is replaced during a strategic merge patch.",
                                      "items": {
                                        "type": "string"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "matchLabels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "namespaces": {
                            "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "topologyKey": {
                            "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "topologyKey"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                },
                "podAntiAffinity": {
                  "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).",
                  "properties": {
                    "preferredDuringSchedulingIgnoredDuringExecution": {
                      "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.",
                      "items": {
                        "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
                        "properties": {
                          "podAffinityTerm": {
                            "description": "Required. A pod affinity term, associated with the corresponding weight.",
                            "properties": {
                              "labelSelector": {
                                "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.",
                                "properties": {
                                  "matchExpressions": {
                                    "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                    "items": {
                                      "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                      "properties": {
                                        "key": {
                                          "description": "key is the label key that the selector applies to.",
                                          "type": "string"
                                        },
                                        "operator": {
                                          "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                          "type": "string"
                                        },
                                        "values": {
                                          "description": "values is 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. This array is replaced during a strategic merge patch.",
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "operator"
                                      ],
                                      "type": "object"
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                    "type": "object"
                                  }
                                },
                                "type": "object"
                              },
                              "matchLabelKeys": {
                                "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "mismatchLabelKeys": {
                                "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "namespaceSelector": {
                                "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.",
                                "properties": {
                                  "matchExpressions": {
                                    "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                    "items": {
                                      "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                      "properties": {
                                        "key": {
                                          "description": "key is the label key that the selector applies to.",
                                          "type": "string"
                                        },
                                        "operator": {
                                          "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                          "type": "string"
                                        },
                                        "values": {
                                          "description": "values is 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. This array is replaced during a strategic merge patch.",
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "required": [
                                        "key",
                                        "operator"
                                      ],
                                      "type": "object"
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                    "type": "object"
                                  }
                                },
                                "type": "object"
                              },
                              "namespaces": {
                                "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "topologyKey": {
                                "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.",
                                "type": "string"
                              }
                            },
                            "required": [
                              "topologyKey"
                            ],
                            "type": "object"
                          },
                          "weight": {
                            "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.",
                            "format": "int32",
                            "type": "integer"
                          }
                        },
                        "required": [
                          "podAffinityTerm",
                          "weight"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "requiredDuringSchedulingIgnoredDuringExecution": {
                      "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.",
                      "items": {
                        "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running",
                        "properties": {
                          "labelSelector": {
                            "description": "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.",
                            "properties": {
                              "matchExpressions": {
                                "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                "items": {
                                  "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                  "properties": {
                                    "key": {
                                      "description": "key is the label key that the selector applies to.",
                                      "type": "string"
                                    },
                                    "operator": {
                                      "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                      "type": "string"
                                    },
                                    "values": {
                                      "description": "values is 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. This array is replaced during a strategic merge patch.",
                                      "items": {
                                        "type": "string"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "matchLabels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "matchLabelKeys": {
                            "description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "mismatchLabelKeys": {
                            "description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "namespaceSelector": {
                            "description": "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces.",
                            "properties": {
                              "matchExpressions": {
                                "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                                "items": {
                                  "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                                  "properties": {
                                    "key": {
                                      "description": "key is the label key that the selector applies to.",
                                      "type": "string"
                                    },
                                    "operator": {
                                      "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                                      "type": "string"
                                    },
                                    "values": {
                                      "description": "values is 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. This array is replaced during a strategic merge patch.",
                                      "items": {
                                        "type": "string"
                                      },
                                      "type": "array"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "operator"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              },
                              "matchLabels": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "namespaces": {
                            "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\".",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "topologyKey": {
                            "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "topologyKey"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "metadata": {
              "description": "Extra labels and annotations on the pod template.",
              "nullable": true,
              "properties": {
                "annotations": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object"
                },
                "labels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "nodeSelector": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "The operator copies this to `PodSpec.nodeSelector`.",
              "nullable": true,
              "type": "object"
            },
            "tolerations": {
              "description": "The operator copies this to `PodSpec.tolerations`.",
              "items": {
                "description": "The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.",
                "properties": {
                  "effect": {
                    "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.",
                    "type": "string"
                  },
                  "key": {
                    "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.",
                    "type": "string"
                  },
                  "operator": {
                    "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.",
                    "type": "string"
                  },
                  "tolerationSeconds": {
                    "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.",
                    "format": "int64",
                    "type": "integer"
                  },
                  "value": {
                    "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      },
      "required": [
        "nodeIdStart",
        "roles"
      ],
      "type": "object"
    },
    "status": {
      "nullable": true,
      "properties": {
        "conditions": {
          "default": [],
          "description": "Standard Kubernetes-style condition list.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "RFC3339 timestamp.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message.",
                "type": "string"
              },
              "reason": {
                "description": "CamelCase machine reason.",
                "type": "string"
              },
              "status": {
                "description": "`True`, `False`, or `Unknown`.",
                "type": "string"
              },
              "type": {
                "description": "For example, `Ready`.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "message",
              "reason",
              "status",
              "type"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "readyReplicas": {
          "description": "The same value as `StatefulSet.status.readyReplicas`.",
          "format": "int32",
          "nullable": true,
          "type": "integer"
        },
        "replicas": {
          "description": "The same value as `StatefulSet.status.replicas`.",
          "format": "int32",
          "nullable": true,
          "type": "integer"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "spec"
  ],
  "title": "KafkaNodePool",
  "type": "object"
}

spec

spec object Required 9 fields

A pool of nodes, which are pods, that share the role, the image, and the resources.

There is one StatefulSet for each pool. Clients address the pods through the shared headless Service that the parent Kafka owns.

Example
View JSON example
{
  "nodeIdStart": 0,
  "roles": [
    "Controller",
    "Broker"
  ]
}
Default No schema default
Not declared
clientDispatchQueueCapacity integer | null (uint) Optional

Kafka client request-dispatch queue capacity.

Example
64
Default No schema default
Not declared
Validation and schema details
Minimum
1
#
clientFrameMax string | null Optional

Maximum accepted Kafka client frame size.

Example
"32KiB"
Default No schema default
Not declared
#
image string | null Optional

Container image. The operator uses --default-broker-image when this field is absent.

Example
"ghcr.io/krabka-io/krabka-broker:v1.0.5"
Default Runtime / omission

Use the operator's --default-broker-image value when omitted.

#
nodeIdStart integer (int32) Required

First node id. Pod ordinal i -> node_id = nodeIdStart + i.

Example
0
Default No schema default
Not declared
Validation and schema details
Maximum
999999
Minimum
0
#
replicas integer (int32) Optional

Number of pods. Each ordinal gets one consecutive node id.

Example
3
Default Schema default
1
Validation and schema details
Minimum
1
#
resources object | null Optional 3 fields

Broker container resources.

Example
View JSON example
{
  "requests": {
    "cpu": "500m",
    "memory": "512Mi"
  },
  "limits": {
    "cpu": "2",
    "memory": "2Gi"
  }
}
Default No schema default
Not declared
claims array Optional 1 field

Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.

This is an alpha field and requires enabling the DynamicResourceAllocation feature gate.

This field is immutable. It can only be set for containers.

Example
View JSON example
[
  {
    "name": "example"
  }
]
Default No schema default
Not declared
[] object Array item 2 fields

ResourceClaim references one entry in PodSpec.ResourceClaims.

Example
View JSON example
{
  "name": "example"
}
Default No independent default
Defined by the parent
name string Required

Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container.

Example
"example"
Default No schema default
Not declared
#
request string Optional

Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.

Example
"example"
Default No schema default
Not declared
#
#
#
limits object Optional 1 field

Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Example
View JSON example
{
  "cpu": "2",
  "memory": "2Gi"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` <quantity>        ::= <signedNumber><suffix>\n\n\t(Note that <suffix> may be empty, from the \"\" case in <decimalSI>.)\n\n<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= \"+\" | \"-\" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n<decimalSI>       ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n<decimalExponent> ::= \"e\" <signedNumber> | \"E\" <signedNumber> ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.",
  "x-kubernetes-int-or-string": true
}
{key} integer | string Map value

Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.

The serialization format is:

<quantity>        ::= <signedNumber><suffix>

	(Note that <suffix> may be empty, from the "" case in <decimalSI>.)

<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= "+" | "-" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei

	(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)

<decimalSI>       ::= m | "" | k | M | G | T | P | E

	(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)

<decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>

No matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.

When a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.

Before serializing, Quantity will be put in "canonical form". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:

  • No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.

The sign will be omitted unless the number is negative.

Examples:

  • 1.5 will be serialized as "1500m" - 1.5Gi will be serialized as "1536Mi"

Note that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.

Non-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)

This format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.

Example
"2Gi"
Default No independent default
Defined by the parent
Validation and schema details
x-kubernetes-int-or-string
true
#
#
requests object Optional 1 field

Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Example
View JSON example
{
  "cpu": "500m",
  "memory": "512Mi"
}
Default Runtime / omission

Use explicit limits if requests is omitted; otherwise Kubernetes selects an implementation-defined value.

Validation and schema details
Additional properties
{
  "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n``` <quantity>        ::= <signedNumber><suffix>\n\n\t(Note that <suffix> may be empty, from the \"\" case in <decimalSI>.)\n\n<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= \"+\" | \"-\" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n<decimalSI>       ::= m | \"\" | k | M | G | T | P | E\n\n\t(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n<decimalExponent> ::= \"e\" <signedNumber> | \"E\" <signedNumber> ```\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n\n- No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n- 1.5 will be serialized as \"1500m\" - 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.",
  "x-kubernetes-int-or-string": true
}
{key} integer | string Map value

Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.

The serialization format is:

<quantity>        ::= <signedNumber><suffix>

	(Note that <suffix> may be empty, from the "" case in <decimalSI>.)

<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= "+" | "-" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei

	(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)

<decimalSI>       ::= m | "" | k | M | G | T | P | E

	(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)

<decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>

No matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.

When a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.

Before serializing, Quantity will be put in "canonical form". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:

  • No precision is lost - No fractional digits will be emitted - The exponent (or suffix) is as large as possible.

The sign will be omitted unless the number is negative.

Examples:

  • 1.5 will be serialized as "1500m" - 1.5Gi will be serialized as "1536Mi"

Note that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.

Non-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)

This format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.

Example
"500m"
Default No independent default
Defined by the parent
Validation and schema details
x-kubernetes-int-or-string
true
#
#
#
roles array Required 1 field

Roles that each node in this pool has. The list must contain Controller, Broker, or both, without duplicates.

Example
View JSON example
[
  "Controller",
  "Broker"
]
Default No schema default
Not declared
Validation and schema details
Maximum items
2
Minimum items
1
[] string Array item
Example
"Controller"
Default No independent default
Defined by the parent
Allowed values"Controller""Broker"
#
#
storage object | null Optional 5 fields

Storage configuration. None, which means that the field is absent, gives an emptyDir. That is the default. See [Storage].

Example
View JSON example
{
  "type": "PersistentClaim",
  "size": "50Gi",
  "deleteClaim": false
}
Default Runtime / omission

Ephemeral emptyDir storage when omitted; create no PVC.

class string Optional
Example
"fast-ssd"
Default Runtime / omission

Use the cluster's default StorageClass when omitted.

#
deleteClaim boolean Optional
Example
false
Default Runtime / omission

false for PersistentClaim or Jbod storage: retain PVCs when the StatefulSet is deleted.

#
size string Optional
Example
"50Gi"
Default No schema default
Not declared
#
type string Required
Example
"PersistentClaim"
Default No schema default
Not declared
Allowed values"Ephemeral""PersistentClaim""Jbod"
#
volumes array Optional 1 field
Example
View JSON example
[
  {
    "id": 0,
    "size": "10Gi"
  },
  {
    "id": 1,
    "size": "20Gi"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields
Example
View JSON example
{
  "id": 0,
  "size": "10Gi"
}
Default No independent default
Defined by the parent
class string Optional
Example
"fast-ssd"
Default Runtime / omission

Use the cluster's default StorageClass when omitted.

#
id integer (int32) Required
Example
0
Default No schema default
Not declared
#
size string Required
Example
"10Gi"
Default No schema default
Not declared
#
#
#
#
template object | null Optional 4 fields

Optional pod-level customization for every pod in this pool.

Example
View JSON example
{
  "affinity": {
    "nodeAffinity": {
      "preferredDuringSchedulingIgnoredDuringExecution": [
        {
          "preference": {
            "matchExpressions": [
              {
                "key": "topology.kubernetes.io/zone",
                "operator": "In"
              }
            ]
          },
          "weight": 1
        }
      ]
    }
  }
}
Default No schema default
Not declared
affinity object | null Optional 3 fields

The operator copies this to PodSpec.affinity.

Example
View JSON example
{
  "nodeAffinity": {
    "preferredDuringSchedulingIgnoredDuringExecution": [
      {
        "preference": {
          "matchExpressions": [
            {
              "key": "topology.kubernetes.io/zone",
              "operator": "In"
            }
          ]
        },
        "weight": 1
      }
    ]
  }
}
Default No schema default
Not declared
nodeAffinity object Optional 2 fields

Describes node affinity scheduling rules for the pod.

Example
View JSON example
{
  "preferredDuringSchedulingIgnoredDuringExecution": [
    {
      "preference": {
        "matchExpressions": [
          {
            "key": "topology.kubernetes.io/zone",
            "operator": "In"
          }
        ]
      },
      "weight": 1
    }
  ]
}
Default No schema default
Not declared
preferredDuringSchedulingIgnoredDuringExecution array Optional 1 field

The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.

Example
View JSON example
[
  {
    "preference": {
      "matchExpressions": [
        {
          "key": "topology.kubernetes.io/zone",
          "operator": "In"
        }
      ]
    },
    "weight": 1
  }
]
Default No schema default
Not declared
[] object Array item 2 fields

An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

Example
View JSON example
{
  "preference": {
    "matchExpressions": [
      {
        "key": "topology.kubernetes.io/zone",
        "operator": "In"
      }
    ]
  },
  "weight": 1
}
Default No independent default
Defined by the parent
preference object Required 2 fields

A node selector term, associated with the corresponding weight.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "topology.kubernetes.io/zone",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

A list of node selector requirements by node's labels.

Example
View JSON example
[
  {
    "key": "topology.kubernetes.io/zone",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "topology.kubernetes.io/zone",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

The label key that the selector applies to.

Example
"topology.kubernetes.io/zone"
Default No schema default
Not declared
#
operator string Required

Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

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.

Example
View JSON example
[
  "us-west-2a"
]
Default No schema default
Not declared
[] string Array item
Example
"us-west-2a"
Default No independent default
Defined by the parent
#
#
#
#
matchFields array Optional 1 field

A list of node selector requirements by node's fields.

Example
View JSON example
[
  {
    "key": "metadata.name",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "metadata.name",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

The label key that the selector applies to.

Example
"metadata.name"
Default No schema default
Not declared
#
operator string Required

Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

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.

Example
View JSON example
[
  "us-west-2a"
]
Default No schema default
Not declared
[] string Array item
Example
"us-west-2a"
Default No independent default
Defined by the parent
#
#
#
#
#
weight integer (int32) Required

Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.

Example
1
Default No schema default
Not declared
#
#
#
requiredDuringSchedulingIgnoredDuringExecution object Optional 1 field

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

Example
View JSON example
{
  "nodeSelectorTerms": [
    {
      "matchExpressions": [
        {
          "key": "topology.kubernetes.io/zone",
          "operator": "In"
        }
      ]
    }
  ]
}
Default No schema default
Not declared
nodeSelectorTerms array Required 1 field

Required. A list of node selector terms. The terms are ORed.

Example
View JSON example
[
  {
    "matchExpressions": [
      {
        "key": "topology.kubernetes.io/zone",
        "operator": "In"
      }
    ]
  }
]
Default No schema default
Not declared
[] object Array item 2 fields

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.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "topology.kubernetes.io/zone",
      "operator": "In"
    }
  ]
}
Default No independent default
Defined by the parent
matchExpressions array Optional 1 field

A list of node selector requirements by node's labels.

Example
View JSON example
[
  {
    "key": "topology.kubernetes.io/zone",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "topology.kubernetes.io/zone",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

The label key that the selector applies to.

Example
"topology.kubernetes.io/zone"
Default No schema default
Not declared
#
operator string Required

Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

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.

Example
View JSON example
[
  "us-west-2a"
]
Default No schema default
Not declared
[] string Array item
Example
"us-west-2a"
Default No independent default
Defined by the parent
#
#
#
#
matchFields array Optional 1 field

A list of node selector requirements by node's fields.

Example
View JSON example
[
  {
    "key": "metadata.name",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "metadata.name",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

The label key that the selector applies to.

Example
"metadata.name"
Default No schema default
Not declared
#
operator string Required

Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

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.

Example
View JSON example
[
  "us-west-2a"
]
Default No schema default
Not declared
[] string Array item
Example
"us-west-2a"
Default No independent default
Defined by the parent
#
#
#
#
#
#
#
#
podAffinity object Optional 2 fields

Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

Example
View JSON example
{
  "preferredDuringSchedulingIgnoredDuringExecution": [
    {
      "podAffinityTerm": {
        "topologyKey": "kubernetes.io/hostname"
      },
      "weight": 1
    }
  ]
}
Default No schema default
Not declared
preferredDuringSchedulingIgnoredDuringExecution array Optional 1 field

The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

Example
View JSON example
[
  {
    "podAffinityTerm": {
      "topologyKey": "kubernetes.io/hostname"
    },
    "weight": 1
  }
]
Default No schema default
Not declared
[] object Array item 2 fields

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Example
View JSON example
{
  "podAffinityTerm": {
    "topologyKey": "kubernetes.io/hostname"
  },
  "weight": 1
}
Default No independent default
Defined by the parent
podAffinityTerm object Required 6 fields

Required. A pod affinity term, associated with the corresponding weight.

Example
View JSON example
{
  "topologyKey": "kubernetes.io/hostname"
}
Default No schema default
Not declared
labelSelector object Optional 2 fields

A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
matchLabelKeys array Optional 1 field

MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
mismatchLabelKeys array Optional 1 field

MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
namespaceSelector object Optional 2 fields

A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
namespaces array Optional 1 field

namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".

Example
View JSON example
[
  "default"
]
Default No schema default
Not declared
[] string Array item
Example
"default"
Default No independent default
Defined by the parent
#
#
topologyKey string Required

This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

Example
"kubernetes.io/hostname"
Default No schema default
Not declared
#
#
weight integer (int32) Required

weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

Example
1
Default No schema default
Not declared
#
#
#
requiredDuringSchedulingIgnoredDuringExecution array Optional 1 field

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

Example
View JSON example
[
  {
    "topologyKey": "kubernetes.io/hostname"
  }
]
Default No schema default
Not declared
[] object Array item 6 fields

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

Example
View JSON example
{
  "topologyKey": "kubernetes.io/hostname"
}
Default No independent default
Defined by the parent
labelSelector object Optional 2 fields

A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
matchLabelKeys array Optional 1 field

MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
mismatchLabelKeys array Optional 1 field

MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
namespaceSelector object Optional 2 fields

A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
namespaces array Optional 1 field

namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".

Example
View JSON example
[
  "default"
]
Default No schema default
Not declared
[] string Array item
Example
"default"
Default No independent default
Defined by the parent
#
#
topologyKey string Required

This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

Example
"kubernetes.io/hostname"
Default No schema default
Not declared
#
#
#
#
podAntiAffinity object Optional 2 fields

Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

Example
View JSON example
{
  "preferredDuringSchedulingIgnoredDuringExecution": [
    {
      "podAffinityTerm": {
        "topologyKey": "kubernetes.io/hostname"
      },
      "weight": 1
    }
  ]
}
Default No schema default
Not declared
preferredDuringSchedulingIgnoredDuringExecution array Optional 1 field

The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.

Example
View JSON example
[
  {
    "podAffinityTerm": {
      "topologyKey": "kubernetes.io/hostname"
    },
    "weight": 1
  }
]
Default No schema default
Not declared
[] object Array item 2 fields

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Example
View JSON example
{
  "podAffinityTerm": {
    "topologyKey": "kubernetes.io/hostname"
  },
  "weight": 1
}
Default No independent default
Defined by the parent
podAffinityTerm object Required 6 fields

Required. A pod affinity term, associated with the corresponding weight.

Example
View JSON example
{
  "topologyKey": "kubernetes.io/hostname"
}
Default No schema default
Not declared
labelSelector object Optional 2 fields

A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
matchLabelKeys array Optional 1 field

MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
mismatchLabelKeys array Optional 1 field

MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
namespaceSelector object Optional 2 fields

A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
namespaces array Optional 1 field

namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".

Example
View JSON example
[
  "default"
]
Default No schema default
Not declared
[] string Array item
Example
"default"
Default No independent default
Defined by the parent
#
#
topologyKey string Required

This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

Example
"kubernetes.io/hostname"
Default No schema default
Not declared
#
#
weight integer (int32) Required

weight associated with matching the corresponding podAffinityTerm, in the range 1-100.

Example
1
Default No schema default
Not declared
#
#
#
requiredDuringSchedulingIgnoredDuringExecution array Optional 1 field

If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.

Example
View JSON example
[
  {
    "topologyKey": "kubernetes.io/hostname"
  }
]
Default No schema default
Not declared
[] object Array item 6 fields

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running

Example
View JSON example
{
  "topologyKey": "kubernetes.io/hostname"
}
Default No independent default
Defined by the parent
labelSelector object Optional 2 fields

A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
matchLabelKeys array Optional 1 field

MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
mismatchLabelKeys array Optional 1 field

MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

Example
View JSON example
[
  "app"
]
Default Documented behavior

The default value is empty. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).

[] string Array item
Example
"app"
Default No independent default
Defined by the parent
#
#
namespaceSelector object Optional 2 fields

A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.

Example
View JSON example
{
  "matchExpressions": [
    {
      "key": "app",
      "operator": "In"
    }
  ]
}
Default No schema default
Not declared
matchExpressions array Optional 1 field

matchExpressions is a list of label selector requirements. The requirements are ANDed.

Example
View JSON example
[
  {
    "key": "app",
    "operator": "In"
  }
]
Default No schema default
Not declared
[] object Array item 3 fields

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Example
View JSON example
{
  "key": "app",
  "operator": "In"
}
Default No independent default
Defined by the parent
key string Required

key is the label key that the selector applies to.

Example
"app"
Default No schema default
Not declared
#
operator string Required

operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.

Example
"In"
Default No schema default
Not declared
#
values array Optional 1 field

values is 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. This array is replaced during a strategic merge patch.

Example
View JSON example
[
  "kafka"
]
Default No schema default
Not declared
[] string Array item
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
#
matchLabels object Optional 1 field

matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.

Example
View JSON example
{
  "example": "kafka"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
namespaces array Optional 1 field

namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".

Example
View JSON example
[
  "default"
]
Default No schema default
Not declared
[] string Array item
Example
"default"
Default No independent default
Defined by the parent
#
#
topologyKey string Required

This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.

Example
"kubernetes.io/hostname"
Default No schema default
Not declared
#
#
#
#
#
metadata object | null Optional 2 fields

Extra labels and annotations on the pod template.

Example
View JSON example
{
  "annotations": {
    "prometheus.io/scrape": "true"
  }
}
Default No schema default
Not declared
annotations object Optional 1 field
Example
View JSON example
{
  "prometheus.io/scrape": "true"
}
Default Runtime / omission

{} when omitted; add no extra annotations.

Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"example-value"
Default No independent default
Defined by the parent
#
#
labels object Optional 1 field
Example
View JSON example
{
  "team": "platform"
}
Default Runtime / omission

{} when omitted; add no extra labels.

Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"kafka"
Default No independent default
Defined by the parent
#
#
#
nodeSelector object | null Optional 1 field

The operator copies this to PodSpec.nodeSelector.

Example
View JSON example
{
  "kubernetes.io/os": "linux"
}
Default No schema default
Not declared
Validation and schema details
Additional properties
{
  "type": "string"
}
{key} string Map value
Example
"linux"
Default No independent default
Defined by the parent
#
#
tolerations array Optional 1 field

The operator copies this to PodSpec.tolerations.

Example
View JSON example
[
  {
    "key": "dedicated",
    "operator": "Equal",
    "value": "kafka",
    "effect": "NoSchedule"
  }
]
Default Runtime / omission

[] when omitted; add no tolerations.

[] object Array item 5 fields

The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

Example
View JSON example
{
  "key": "dedicated",
  "operator": "Equal",
  "value": "kafka",
  "effect": "NoSchedule"
}
Default No independent default
Defined by the parent
effect string Optional

Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.

Example
"NoSchedule"
Default Runtime / omission

Empty or omitted: match every taint effect.

#
key string Optional

Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.

Example
"dedicated"
Default No schema default
Not declared
#
operator string Optional

Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.

Example
"Equal"
Default Runtime / omission

Equal when omitted.

#
tolerationSeconds integer (int64) Optional

TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.

Example
300
Default Runtime / omission

Unset: tolerate a matching NoExecute taint indefinitely. Ignored for other effects.

#
value string Optional

Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.

Example
"kafka"
Default No schema default
Not declared
#
#
#
#
#

status

status object | null Optional 3 fields
Example
View JSON example
{
  "conditions": [
    {
      "lastTransitionTime": "2026-10-05T12:00:00Z",
      "message": "The resource is ready.",
      "reason": "Reconciled",
      "status": "True",
      "type": "Ready"
    }
  ]
}
Default No schema default
Not declared
conditions array Optional 1 field

Standard Kubernetes-style condition list.

Example
View JSON example
[
  {
    "lastTransitionTime": "2026-10-05T12:00:00Z",
    "message": "The resource is ready.",
    "reason": "Reconciled",
    "status": "True",
    "type": "Ready"
  }
]
Default Schema default
[]
[] object Array item 5 fields
Example
View JSON example
{
  "lastTransitionTime": "2026-10-05T12:00:00Z",
  "message": "The resource is ready.",
  "reason": "Reconciled",
  "status": "True",
  "type": "Ready"
}
Default No schema default
Not declared
lastTransitionTime string Required

RFC3339 timestamp.

Example
"2026-10-05T12:00:00Z"
Default No schema default
Not declared
#
message string Required

Human-readable message.

Example
"The resource is ready."
Default No schema default
Not declared
#
reason string Required

CamelCase machine reason.

Example
"Reconciled"
Default No schema default
Not declared
#
status string Required

True, False, or Unknown.

Example
"True"
Default No schema default
Not declared
#
type string Required

For example, Ready.

Example
"Ready"
Default No schema default
Not declared
#
#
#
readyReplicas integer | null (int32) Optional

The same value as StatefulSet.status.readyReplicas.

Example
1
Default No schema default
Not declared
#
replicas integer | null (int32) Optional

The same value as StatefulSet.status.replicas.

Example
1
Default No schema default
Not declared
#
#

Resource schema

Resource schema object Resource schema

Auto-generated derived type for KafkaNodePoolSpec via CustomResource

Example
View JSON example
{
  "apiVersion": "krabka.io/v1alpha1",
  "kind": "KafkaNodePool",
  "metadata": {
    "name": "example",
    "namespace": "default",
    "labels": {
      "krabka.io/cluster": "my-cluster"
    }
  },
  "spec": {
    "nodeIdStart": 0,
    "roles": [
      "Controller",
      "Broker"
    ]
  }
}
Default No resource default
None
#