KafkaNodePool
Expand a field to see its description, example, and default behavior. Nested fields are grouped under their parent.
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 618d621Example 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
No fields match. Change the search or reset the filters.
krabka.io/v1alpha1
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
"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
"Ephemeral""PersistentClaim""Jbod"
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