The Deckhouse Kubernetes Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.
The module lifecycle stage: General Availability
Instance
Scope: Cluster
- v1alpha2
- v1alpha1
Instance describes the full lifecycle of a server in Deckhouse Kubernetes Platform, aggregating status from the Machine object (infrastructure) and Bashible service on the node (configuration).
- objectspec
Specification of the Instance, including references to related resources.
- objectspec.classReference
The reference to the
InstanceClassobject. It is unique for eachcloud-provider-*module.- stringspec.classReference.kind
The object type (e.g.,
OpenStackInstanceClass). The object type is specified in the documentation of the correspondingcloud-provider-module. - stringspec.classReference.name
The name of the required
InstanceClassobject (e.g.,finland-medium).
- objectspec.machineRef
Reference to instance in the cloud.
- stringspec.machineRef.apiVersion
APIVersion defines the versioned schema of this representation of an reference object.
- stringspec.machineRef.kind
Kind is a string value representing the REST resource referenced object represents.
- stringspec.machineRef.name
Name of referenced object.
- stringspec.machineRef.namespace
Namespace of referenced object.
- objectspec.nodeRef
Reference to the kubernetes node object.
- stringspec.nodeRef.name
Node name.
- objectstatus
Most recently observed status of the Instance.
- stringstatus.bashibleStatus
Aggregated status of the bashible configuration process.
Derived from
BashibleReadycondition.Allowed values:
Error,Unknown,Ready,WaitingApproval - objectstatus.bootstrapStatus
Information about instance bootstrapping process.
- stringstatus.bootstrapStatus.description
Description about getting logs.
- stringstatus.bootstrapStatus.logsEndpoint
http endpoint for getting bootstrap logs.
- array of objectsstatus.conditions
Detailed conditions of the instance (
MachineReady,BashibleReady, etc.).- stringstatus.conditions.lastHeartbeatTime
Last time the condition heartbeat was updated by its source.
- stringstatus.conditions.lastTransitionTime
Last time the condition transitioned from one status to another.
- stringstatus.conditions.message
A human-readable message indicating details about the transition.
- integerstatus.conditions.observedGeneration
The generation observed by the controller.
- stringstatus.conditions.reason
Required value
The reason for the condition’s last transition.
- stringstatus.conditions.severity
Severity of the condition (
Error,Warning,Info). - stringstatus.conditions.status
Required value
Status of the condition (
True,False,Unknown). - stringstatus.conditions.type
Required value
Type of the condition (e.g.,
MachineReady,BashibleReady).
- stringstatus.machineStatus
Aggregated status of the infrastructure machine.
Derived from
MachineReadycondition.Allowed values:
Progressing,Error,Ready,Blocked,Rebooting - stringstatus.message
A human-readable message indicating details about the current status or error.
Displayed in CLI only when using
-o wideford8 k. - stringstatus.phase
The high-level lifecycle phase of the Instance.
Mapping: Pending -> Provisioning -> Provisioned -> Running -> Terminating.
Allowed values:
Pending,Provisioning,Provisioned,Running,Terminating,Unknown
Describes an implementation-independent ephemeral machine resource.
- objectstatus
- objectstatus.bootstrapStatus
Information about instance bootstrapping process.
- stringstatus.bootstrapStatus.description
Description about getting logs.
- stringstatus.bootstrapStatus.logsEndpoint
http endpoint for getting bootstrap logs.
- objectstatus.classReference
The reference to the
InstanceClassobject. It is unique for eachcloud-provider-*module.- stringstatus.classReference.kind
The object type (e.g.,
OpenStackInstanceClass). The object type is specified in the documentation of the correspondingcloud-provider-module.Allowed values:
OpenStackInstanceClass,GCPInstanceClass,VsphereInstanceClass,AWSInstanceClass,YandexInstanceClass,AzureInstanceClass,VCDInstanceClass,ZvirtInstanceClass,DynamixInstanceClass,HuaweiCloudInstanceClass,DVPInstanceClass - stringstatus.classReference.name
The name of the required
InstanceClassobject (e.g.,finland-medium).
- objectstatus.currentStatus
Current status of the instance object.
- stringstatus.currentStatus.lastUpdateTime
Last update time of current status.
- stringstatus.currentStatus.phase
InstancePhase is a label for the condition of a instance at the current time.
- objectstatus.lastOperation
Last operation refers to the status of the last operation performed.
- stringstatus.lastOperation.description
Description of the current operation.
- stringstatus.lastOperation.lastUpdateTime
Last update time of current operation.
- stringstatus.lastOperation.state
State of operation.
- stringstatus.lastOperation.type
Type of operation.
- objectstatus.machineRef
Reference to instance in the cloud.
- stringstatus.machineRef.apiVersion
APIVersion defines the versioned schema of this representation of an reference object.
- stringstatus.machineRef.kind
Kind is a string value representing the REST resource referenced object represents.
- stringstatus.machineRef.name
Name of referenced object.
- stringstatus.machineRef.namespace
Namespace of referenced object.
- objectstatus.nodeRef
Reference to the kubernetes node object.
- stringstatus.nodeRef.name
Node name.
InstanceTypesCatalog
Scope: Cluster
Version: v1alpha1
Contains information about discovered data from cloud.
- array of objectsinstanceTypes
Required value
List of available instance types.
- integer or stringinstanceTypes.cpu
Required value
The number of CPUs for the instance type.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - integer or stringinstanceTypes.memory
Required value
The amount of RAM a instance type has.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - stringinstanceTypes.name
Instance type name.
- integer or stringinstanceTypes.rootDisk
Root disk size.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
NodeGroup
Short names: ng
Scope: Cluster
- v1
- v1alpha2
- v1alpha1
Describes the runtime parameters of the node group.
Example:
# NodeGroup for cloud nodes in AWS.
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: test
spec:
nodeType: CloudEphemeral
cloudInstances:
zones:
- eu-west-1a
- eu-west-1b
minPerZone: 1
maxPerZone: 2
classReference:
kind: AWSInstanceClass
name: test
nodeTemplate:
labels:
tier: test
---
# NodeGroup for static nodes on bare metal servers (or VMs).
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: worker
spec:
nodeType: Static
- objectmetadata
- stringmetadata.name
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Maximum length:
42
- objectspec
Required value
- objectspec.chaos
Chaos monkey settings.
Example:
chaos: mode: DrainAndDelete period: 24h- stringspec.chaos.mode
The chaos monkey mode:
DrainAndDelete— drains and deletes a node when triggered;Disabled— leaves this NodeGroup intact.
Default:
DisabledAllowed values:
Disabled,DrainAndDelete - stringspec.chaos.period
The time interval to use for the chaos monkey.
It is specified as a string containing the time unit in hours and minutes: 30m, 1h, 2h30m, 24h.
Default:
6hPattern:
^([0-9]+h([0-9]+m)?|[0-9]+m)$
- objectspec.cloudInstances
Parameter for provisioning the cloud-based VMs.
Caution. Can only be used together with
nodeType: CloudEphemeral.- objectspec.cloudInstances.classReference
Required value
The reference to the
InstanceClassobject. It is unique for eachcloud-provider-*module.- stringspec.cloudInstances.classReference.kind
The kind of the
InstanceClassobject (e.g.,OpenStackInstanceClass). Supported kinds are defined by the installed cloud provider modules and specified in their documentation. - stringspec.cloudInstances.classReference.name
The name of the required
InstanceClassobject (e.g.,finland-medium).
- integerspec.cloudInstances.maxPerZone
Required value
The maximum number of instances for the group in each zone.
This value is used as the upper bound in cluster-autoscaler.
Allowed values:
0 <= X - integerspec.cloudInstances.maxSurgePerZone
The maximum number of instances to rollout simultaneously in the group in each zone.
Default:
1Allowed values:
0 <= X - integer
The maximum number of unavailable instances (during rollout) in the group in each zone.
Default:
0Allowed values:
0 <= X - integerspec.cloudInstances.minPerZone
Required value
The minimum number of instances for the group in each zone.
This value is used in the
MachineDeploymentobject and as a lower bound in cluster-autoscaler.Allowed values:
0 <= X - integerspec.cloudInstances.priority
Priority of the node group.
When scaling a cluster, the autoscaler will first select node groups with a higher priority set. If several node groups have the same priority, the autoscaler randomly selects a group of them. You can control the rate at which nodes are switched to lower-priority groups on demand (for more details, see the FAQ).
Using priorities can be convenient to prefer ordering cheaper nodes (for example, spot instances) over more expensive ones.
- booleanspec.cloudInstances.quickShutdownDeprecated
Lowers CloudEphemeral machine drain timeout to 5 minutes.
- integer or stringspec.cloudInstances.standby
The summary number of overprovisioned nodes for this
NodeGroupin all zones.An overprovisioned node is a cluster node on which resources are reserved that are available at any time for scaling. The presence of such a node allows the cluster autoscaler not to wait for node initialization (which may take several minutes), but to immediately place a load on it.
The value can be an absolute number (for example, 2) or a percentage of desired nodes (for example, 10%). If a percentage is specified, the absolute number is calculated based on the percentage of the maximum number of nodes (the maxPerZone parameter) rounded down, but not less than one.
Pattern:
^[0-9]+%?$ - objectspec.cloudInstances.standbyHolder
Amount of reserved resources.
Used to determine whether to order overprovisioned nodes.
- objectspec.cloudInstances.standbyHolder.notHeldResourcesDeprecated
Deprecated: the parameter is no longer used. Use the
overprovisioningRateparameter.Describes the resources that will not be held (consumed) by the standby holder.
- integer or stringspec.cloudInstances.standbyHolder.notHeldResources.cpu
Describes the amount of CPU that will not be held by standby holder on Nodes from this NodeGroup.
The value can be an absolute number of cpus (for example, 2) as well as a milli representation (for example, 1500m).
Pattern:
^[0-9]+m?$ - integer or stringspec.cloudInstances.standbyHolder.notHeldResources.memory
Describes the amount of memory that will not be held by standby holder on Nodes from this NodeGroup.
The value can be an absolute number of bytes (for example, 128974848) as well as a fixed-point number using one of memory suffixes: G, Gi, M, Mi.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$
- integerspec.cloudInstances.standbyHolder.overprovisioningRate
Percentage of reserved resources calculated from the capacity of a node of a
NodeGroup.Default:
50Allowed values:
1 <= X <= 80
- array of stringsspec.cloudInstances.zones
List of availability zones to create instances in.
The default value depends on the cloud provider selected and usually corresponds to all zones of the region being used.
Example:
zones: - Helsinki - Espoo - Tampere
- objectspec.cri
Container runtime parameters.
- objectspec.cri.containerd
Containerd runtime parameters.
If used,
cri.typemust be set toContainerd.- integerspec.cri.containerd.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- objectspec.cri.containerdV2
ContainerdV2 runtime parameters.
If used,
cri.typemust be set toContainerdV2.When using
ContainerdV2,CgroupsV2will be used (providing improved security and resource management).To use
ContainerdV2as a container runtime, the nodes in the group must meet the following requirements:- Support for
CgroupsV2. - Linux kernel version
5.8or newer. - Systemd version
244or newer. - Support for
erofskernel module.
- integerspec.cri.containerdV2.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- Support for
- objectspec.cri.dockerDeprecated
Docker settings for nodes.
- booleanspec.cri.docker.manage
Enable Docker maintenance from bashible.
Default:
true - integerspec.cri.docker.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- objectspec.cri.notManaged
Settings for not managed CRI for nodes.
- stringspec.cri.notManaged.criSocketPath
Path to CRI socket.
- stringspec.cri.type
Container runtime type.
If not specified, the
defaultCRIparameter value of ClusterConfiguration is used.Note. Docker support is deprecated.
Note. The CSE edition supports containerd v2 only.
Allowed values:
Docker,Containerd,ContainerdV2,NotManaged
- objectspec.disruptions
Disruptions settings for nodes.
Example:
disruptions: approvalMode: Automatic automatic: drainBeforeApproval: false windows: - from: '06:00' to: '08:00' days: - Tue - Sun- stringspec.disruptions.approvalMode
The approval mode for disruptive updates:
Manual— disable automatic disruption approval; the alert will be displayed if disruption is needed. Nodes are not drained automatically inManualmode. If necessary, manually drain nodes before setting theupdate.node.deckhouse.io/disruption-approved=annotation. Caution. Themasternode group update mode must beManualto avoid issues with draining.Automatic— automatically approve disruption-involving updates. Nodes could be drained automatically before reboot, as configured by the drainBeforeApproval option.RollingUpdate— in this mode, a new node with new settings will be created; then, the old node will be deleted. Available only for cloud nodes.
If the
RollingUpdatemode is not used, when updating, the node is first drained and then updated (rebooted) and put back into operation (uncordoned). Note that in this case, the cluster must have sufficient resources to accommodate the load while the node being updated is unavailable. In theRollingUpdatemode, the node is replaced by the updated node, i.e., an extra node appears in the cluster for the duration of the update. In cloud infrastructures, theRollingUpdatemode is convenient, for example, if there are no resources in the cluster to temporarily host the load from the node being updated.Default:
AutomaticAllowed values:
Manual,Automatic,RollingUpdate - objectspec.disruptions.automatic
Additional parameters for the
Automaticmode.- booleanspec.disruptions.automatic.drainBeforeApproval
Drain Pods from the nodes before approving disruption.
Caution. This setting ignores (nodes will be approved without draining Pods):
- for the nodeGroup
masterwith a single node; - for a single
readynode in a nodeGroup picked out for Deckhouse placement.
Default:
true - for the nodeGroup
- array of objectsspec.disruptions.automatic.windows
Time windows for node disruptive updates.
- array of stringsspec.disruptions.automatic.windows.days
Days of the week when node could be updated.
Examples:
days: Mondays: Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.disruptions.automatic.windows.from
Required value
Start time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringspec.disruptions.automatic.windows.to
Required value
End time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- objectspec.disruptions.rollingUpdate
Additional parameters for the
RollingUpdatemode.- array of objectsspec.disruptions.rollingUpdate.windows
Time windows for node disruptive updates.
- array of stringsspec.disruptions.rollingUpdate.windows.days
Days of the week when node could be updated.
Examples:
days: Mondays: Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.disruptions.rollingUpdate.windows.from
Required value
Start time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringspec.disruptions.rollingUpdate.windows.to
Required value
End time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- objectspec.fencing
Enable the fencing-controller for a node group.
- stringspec.fencing.mode
Required value
Specifies the operating mode of the fencing-controller.
Supported modes:
Watchdog: Uses the watchdog kernel module to automatically reboot nodes that lose connectivity with the cluster. In this mode, the fencing-agent also monitors node availability in the cluster.
When
fencingis enabled, the NodeGroupConfiguration script loads thesoftdogkernel module with thesoft_marginparameter set to the value ofspec.fencing.watchdog.timeout(60 seconds by default) andsoft_panic=1.How the fencing-agent works:
- The agent opens the
/dev/watchdogdevice and sets thenode-manager.deckhouse.io/fencing-enabledlabel on the node, as well as thenode-manager.deckhouse.io/fencing-modelabel with the valueWatchdog. - The fencing-agent joins a gossip cluster (
memberlist) with agents from the same node group. - The agent regularly checks quorum (availability of the majority of nodes in the group):
- If quorum is lost (
quorum=false), the agent performs an additional check of Kubernetes API availability. - If quorum is present or the Kubernetes API is reachable, the agent resets the watchdog timer.
- If neither quorum nor access to the Kubernetes API is available, the watchdog is no longer reset, the timer expires, and a kernel panic occurs.
- The agent respects maintenance annotations
node-manager.deckhouse.io/fencing-disable,update.node.deckhouse.io/approved, andupdate.node.deckhouse.io/disruption-approved, temporarily disabling the watchdog during planned operations.
When
fencingis enabled, automatic node reboot after a kernel panic is disabled at the OS level. This prevents a node from returning in an undefined state before it is properly handled (manually for static nodes, or via the cloud-provider-controller for cloud nodes).The fencing-controller takes the node type (
node.deckhouse.io/type) into account when handling a failed node:- For cloud nodes (
CloudEphemeral,CloudPermanent), the controller deletes the Node object, after which the cloud-provider-controller recreates the corresponding virtual machine. - For static nodes (
Static,CloudStatic), the controller only evicts workloads while keeping the Node object in the cluster.
For details on how fencing handles different node types, see FAQ.
Allowed values:
Watchdog - objectspec.fencing.watchdog
- stringspec.fencing.watchdog.timeout
Required value
Watchdog timeout duration. Should be specified in seconds, minutes or hours.
Default:
60sPattern:
^[0-9]+[smh]{1}$
- objectspec.gpu
Available in editions: EE
GPU parameters.
- objectspec.gpu.exclusive
Without GPU sharing.
- objectspec.gpu.mig
MIGsharing strategy parameters.- array of objectsspec.gpu.mig.customConfigs
Custom MIG partitioning by GPU index.
Used only when
partedConfig: customis set.Represents an array of devices (a map keyed by
index), where each entry refers to a GPU by its index and describes the slices to be created.Examples:
customConfigs: profile: 3g.40gb count: 2customConfigs: profile: 1g.10gb.me count: 1- integerspec.gpu.mig.customConfigs.index
Required value
GPU index on the node.
Allowed values:
0 <= X - array of objectsspec.gpu.mig.customConfigs.slices
Required value
List of MIG slices to create.
- integerspec.gpu.mig.customConfigs.slices.count
Required value
Number of slices in the selected profile.
Default:
1Allowed values:
1 <= X <= 7 - stringspec.gpu.mig.customConfigs.slices.profile
Required value
MIG profile name.
Pattern:
^[0-9]+g\.[0-9]+gb(\.me)?$Examples:
profile: 3g.40gbprofile: 1g.10gbprofile: 1g.10gb.me
- stringspec.gpu.mig.partedConfig
MIG configuration name.
Standard
all-*profiles are supported (the same partitioning applied to all GPUs), as well as thecustomvalue, which allows defining partitioning individually for each GPU.Default:
all-1g.5gb
- stringspec.gpu.sharing
GPU sharing strategy:
Exclusive— no sharing (each GPU is fully allocated to a single Pod).TimeSlicing— time-sliced sharing (multiple Pods can share one GPU concurrently by splitting GPU time).MIG— use NVIDIA Multi-Instance GPU (MIG) to split each GPU into multiple instances (if supported by hardware).
Allowed values:
TimeSlicing,MIG,Exclusive - objectspec.gpu.timeSlicing
TimeSlicingsharing strategy parameters.- numberspec.gpu.timeSlicing.partitionCount
Count of partition per GPU.
Default:
4Allowed values:
1 <= X <= 100
- objectspec.kubelet
Kubelet settings for nodes.
- integerspec.kubelet.containerLogMaxFiles
How many rotated log files to store before deleting them.
Default:
4Allowed values:
1 <= X <= 20 - stringspec.kubelet.containerLogMaxSize
Maximum log file size before it is rotated.
Default:
50MiPattern:
\d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m] - integerspec.kubelet.maxPods
Set the max count of pods per node for given
NodeGroup. When left unspecified, the system automatically determines this limit according to the value of the podSubnetNodeCIDRPrefix ClusterConfiguration parameter:120pods forpodSubnetNodeCIDRPrefix≥24;250pods forpodSubnetNodeCIDRPrefix=23;500pods forpodSubnetNodeCIDRPrefix=22;1000pods forpodSubnetNodeCIDRPrefix≤21.
- objectspec.kubelet.memorySwap
Configuration of swap memory usage for kubelet.
- objectspec.kubelet.memorySwap.limitedSwap
Configuration for the limited swap mode. Required when
swapBehavioris set toLimitedSwap.- stringspec.kubelet.memorySwap.limitedSwap.size
Required value
Size of the swap file to create, specified in GB (for example, “2G”, “4G”).
Pattern:
^\d+G$Example:
size: 1G
- stringspec.kubelet.memorySwap.swapBehavior
Defines how swap memory is handled on the node:
NoSwap: Swap is disabled. This is the traditional Kubernetes behavior.LimitedSwap: Kubelet can use swap memory up to the limit specified inlimitedSwap.size.
For details on swap memory usage on nodes, refer to Kubernetes documentation.
Allowed values:
NoSwap,LimitedSwap - integerspec.kubelet.memorySwap.swappiness
Defines the kernel’s tendency to use the swap.
0: Minimal swap usage (only to avoid OOM).60: Default balanced behavior.100: Aggressive swap usage.
This value is set via
vm.swappinesssysctl parameter.Default:
60Allowed values:
0 <= X <= 100
- objectspec.kubelet.resourceReservation
Management of resource reservation for system daemons on a node.
More info in the Kubernetes documentation.
- stringspec.kubelet.resourceReservation.mode
Defines the system resource reservation mode:
Off— disables resource reservation.Auto— reserves resources based on the Node capacity.Static— reserves resources based on the values provided by the user via thestaticparameter.
Note that currently we do not use a dedicated group
cgroupfor resource reservation (-system-reserved-cgroupis not used).Default:
Auto - objectspec.kubelet.resourceReservation.static
Resource reservation parameters for the ‘Static’ mode.
- integer or stringspec.kubelet.resourceReservation.static.cpu
Pattern:
\d+[m] - integer or stringspec.kubelet.resourceReservation.static.ephemeralStorage
Pattern:
\d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m] - integer or stringspec.kubelet.resourceReservation.static.memory
Pattern:
\d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]
- stringspec.kubelet.rootDir
Directory path for managing kubelet files (volume mounts,etc).
Default:
/var/lib/kubelet - booleanspec.kubelet.seccompDefault
Use
RuntimeDefaultseccomp profile for workloads that don’t specify seccomp profile explicitly. - objectspec.kubelet.topologyManager
Controls a topology manager.
The topology manager allows the Kubernetes scheduler to take resource topology data into account when scheduling pods.
In a cluster with NUMA nodes, the topology manager can improve application performance by aligning workloads with NUMA nodes that are more resource-efficient.
For more information, see the Kubernetes documentation.
- booleanspec.kubelet.topologyManager.enabled
Enables Topology Management on a node.
If the topology manager is enabled, strict resource allocation modes are activated for containers in Guaranteed pods. The following parameter values are set in the kubelet configuration:
cpuManagerPolicy: static: The kubelet exclusively assigns whole physical cores to a container with an integer CPU request.memoryManagerPolicy: Static: The kubelet assigns the container’s memory to a minimum number of NUMA nodes (preferably one).
Default:
false - stringspec.kubelet.topologyManager.policy
Resource/topology alignment policy to use when scheduling a pod.
There are four supported policies:
None— no resource alignment (default).BestEffort— a preferred NUMA node is defined for each container. If there are no preferred nodes for the pod available, it will be scheduled to a node without taking topology manager data into account, while the already running pod will keep running.Restricted— a preferred NUMA node is defined for each pod container. If there are no preferred nodes available, a new pod will not be scheduled to a node while an already running pod will be stopped.SingleNumaNode— a preferred NUMA node is defined for each pod container. If there is no NUMA node available that suits all pod containers, a new pod will not be scheduled while an already running pod will be stopped.
More information can be found in the Kubernetes documentation.
Default:
NoneAllowed values:
None,BestEffort,Restricted,SingleNumaNode - stringspec.kubelet.topologyManager.scope
Defines granularity with which resources are aligned:
Container. The preferred resources are computed for a container. The computation does not take into account that multiple containers may belong to the same pod.Pod. The preferred resources are computed for the pod. All containers in the pod are treated as a whole in the computation.
Default:
ContainerAllowed values:
Container,Pod
- integerspec.nodeDrainTimeoutSecond
Maximum duration (in seconds) for which the controller attempts to reschedule pods to a new machine during node draining.
The range is the one the module’s own settings have always enforced. A value outside it used to be accepted here and then rejected when the module read it, which stopped node-manager reconciling anything at all.
Allowed values:
30 <= X <= 7200 - objectspec.nodeTemplate
Specification of some of the fields that will be maintained in all nodes of the group.
Example:
nodeTemplate: labels: environment: production app: warp-drive-ai annotations: ai.fleet.com/discombobulate: 'true' taints: - effect: NoExecute key: ship-class value: frigate- objectspec.nodeTemplate.annotations
Similar to the standard
metadata.annotationsfield.Example:
annotations: ai.fleet.com/discombobulate: 'true' - objectspec.nodeTemplate.labels
Similar to the standard
metadata.labelsfield.Example:
labels: environment: production app: warp-drive-ai - array of objectsspec.nodeTemplate.taints
Similar to the
.spec.taintsfield of the Node object.Available fields:
effect,key, andvalues.Example:
taints: - effect: NoExecute key: ship-class value: frigate- stringspec.nodeTemplate.taints.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringspec.nodeTemplate.taints.key
- stringspec.nodeTemplate.taints.value
- stringspec.nodeType
Required value
The type of nodes this group provides:
CloudEphemeral— nodes for this group will be automatically created (and deleted) in the cloud of the specified cloud provider;CloudPermanent— nodes from ProviderClusterConfiguration will be created via dhctl;CloudStatic— a static node (created manually or using any external tools) hosted in the cloud integrated with one of the cloud providers. This node has the CSI running, and it is managed by the cloud-controller-manager: theNodeobject automatically gets the information about the zone and region based on the cloud data; if a node gets deleted from the cloud, its corresponding Node object will be deleted in Kubernetes;Static— a static node hosted on a bare metal or virtual machine. The cloud-controller-manager does not manage the node even if one of the cloud providers is enabled.
Allowed values:
CloudEphemeral,CloudPermanent,CloudStatic,Static - objectspec.operatingSystem
Operating System settings for nodes.
- booleanspec.operatingSystem.manageKernelDeprecated
This parameter has no effect. Earlier, it enabled kernel maintenance on behalf of bashible.
Default:
true
- objectspec.staticInstances
Parameter for provisioning static machines to the cluster.
- integerspec.staticInstances.count
Target number of StaticInstance resources (matching the
labelSelector) that DKP bootstraps and adds into the cluster.In a NodeGroup with Static or CloudStatic nodes, this parameter sets the expected number of nodes. DKP uses this value for state control and automation purposes.
Warning. Set this parameter explicitly. The default value is
0, which means DKP won’t bootstrap any StaticInstance resource or add any node to the group unless this value is modified. To add static nodes, specify the required number here (greater than0).Default:
0Allowed values:
0 <= X - objectspec.staticInstances.labelSelector
A label selector is a label query over a set of
staticInstancesresources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.- array of objectsspec.staticInstances.labelSelector.matchExpressions
A list of label selector requirements. The requirements are ANDed.
A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
- stringspec.staticInstances.labelSelector.matchExpressions.key
key is the label key that the selector applies to.
- stringspec.staticInstances.labelSelector.matchExpressions.operator
operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
- array of stringsspec.staticInstances.labelSelector.matchExpressions.values
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.
- stringElement of the array
Pattern:
[a-z0-9]([-a-z0-9]*[a-z0-9])?Length:
1..63
- objectspec.staticInstances.labelSelector.matchLabels
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.
- stringspec.systemType
How the node is managed.
Possible values:
Mutable— the classic node configured on the fly by bashible. This is what an unset field means.Immutable— an agent on the node brings it to the state described in a NodeConfig object. bashible is not used.
Once the field names a value, that value can no longer be changed or removed. A NodeGroup that names none can still record one — but not
Immutablewhile it holds nodes bashible has already configured, since those nodes cannot be handed over to the on-node agent.Allowed values:
Mutable,Immutable - objectspec.update
- integer or stringspec.update.maxConcurrent
Maximum number of concurrently updating nodes.
Can be set as absolute count or as a percent of total nodes.
Default:
1Pattern:
^[1-9][0-9]*%?$
- objectstatus
- objectstatus.conditionSummary
- stringstatus.conditionSummary.ready
Status of the condition summary.
Allowed values:
True,False - stringstatus.conditionSummary.statusMessage
Status message about group handling.
- array of objectsstatus.conditions
- stringstatus.conditions.lastTransitionTime
Last time the condition transit from one status to another.
- stringstatus.conditions.message
Human readable message indicating details about last transition.
- stringstatus.conditions.status
Required value
Status of the condition, one of True, False.
- stringstatus.conditions.type
Required value
Type of node group condition.
- objectstatus.deckhouse
- objectstatus.deckhouse.observed
Contains last timestamp when the resource change was noted by the operator and its checksum.
- stringstatus.deckhouse.observed.checkSum
The checksum of the last observed resource.
- stringstatus.deckhouse.observed.lastTimestamp
Last timestamp when a change of the resource was noted by the operator.
- objectstatus.deckhouse.processed
Contains last timestamp when the resource was applied in the cluster by the operator and its checksum.
- stringstatus.deckhouse.processed.checkSum
The checksum of the last applied resource.
- stringstatus.deckhouse.processed.lastTimestamp
Last timestamp when the resource was applied in the cluster.
- stringstatus.deckhouse.synced
True if last observed version of the resource was successfully applied in the cluster.
- integerstatus.desired
Number of desired machines in the group.
- stringstatus.engine
Machinery used to manage nodes in this group.
The field value indicates which component manages the nodes:
None— nodes in the group are not managed by Machine Controller Manager or CAPI.MCM— nodes in the group are managed by Machine Controller Manager.CAPI— nodes in the group are managed by Cluster API.
Allowed values:
None,MCM,CAPI - stringstatus.error
Error message about possible problems with the group handling.
- integerstatus.instances
Number of instances (in any state) in the group.
- stringstatus.kubernetesVersion
The current version of kubernetes on the nodes, or the version to which the nodes will be upgraded.
- array of objectsstatus.lastMachineFailures
- objectstatus.lastMachineFailures.lastOperation
- stringstatus.lastMachineFailures.lastOperation.description
Last operation’s description.
- stringstatus.lastMachineFailures.lastOperation.lastUpdateTime
Timestamp of last status update for operation.
- stringstatus.lastMachineFailures.lastOperation.state
Machine’s operation state.
- stringstatus.lastMachineFailures.lastOperation.type
Type of operation.
- stringstatus.lastMachineFailures.name
Machine’s name.
- stringstatus.lastMachineFailures.ownerRef
Machine owner’s name.
- stringstatus.lastMachineFailures.providerID
Machine’s ProviderID.
- integerstatus.max
Maximum amount of instances in the group.
- integerstatus.min
Minimal amount of instances in the group.
- integerstatus.nodes
Number of Kubernetes nodes (in any state) in the group.
- integerstatus.ready
Number of ready Kubernetes nodes in the group.
- integerstatus.standby
Number of overprovisioned instances in the group.
- integerstatus.upToDate
Number of up-to-date nodes in the group.
Describes the runtime parameters of the node group.
- objectmetadata
- stringmetadata.name
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Maximum length:
42
- objectspec
Required value
- objectspec.chaos
Chaos monkey settings.
Example:
chaos: mode: DrainAndDelete period: 24h- stringspec.chaos.mode
The chaos monkey mode:
DrainAndDelete— drains and deletes a node when triggered;Disabled— leaves this NodeGroup intact.
Default:
DisabledAllowed values:
Disabled,DrainAndDelete - stringspec.chaos.period
The time interval to use for the chaos monkey (can be specified in the Go format).
Default:
6hPattern:
^[0-9]+[mh]{1}$
- objectspec.cloudInstances
Parameter for provisioning the cloud-based VMs.
Caution. Can only be used together with
nodeType: CloudEphemeral.- objectspec.cloudInstances.classReference
Required value
The reference to the
InstanceClassobject. It is unique for eachcloud-provider-*module.- stringspec.cloudInstances.classReference.kind
The kind of the
InstanceClassobject (e.g.,OpenStackInstanceClass). Supported kinds are defined by the installed cloud provider modules and specified in their documentation. - stringspec.cloudInstances.classReference.name
The name of the required
InstanceClassobject (e.g.,finland-medium).
- integerspec.cloudInstances.maxPerZone
Required value
The maximum number of instances for the group in each zone.
This value is used as the upper bound in cluster-autoscaler.
Allowed values:
0 <= X - integerspec.cloudInstances.maxSurgePerZone
The maximum number of instances to rollout simultaneously in the group in each zone.
Default:
1Allowed values:
0 <= X - integer
The maximum number of unavailable instances (during rollout) in the group in each zone.
Default:
0Allowed values:
0 <= X - integerspec.cloudInstances.minPerZone
Required value
The minimum number of instances for the group in each zone.
This value is used in the
MachineDeploymentobject and as a lower bound in cluster-autoscaler.Allowed values:
0 <= X - integer or stringspec.cloudInstances.standby
The summary number of overprovisioned nodes for this
NodeGroupin all zones.An overprovisioned node is a cluster node on which resources are reserved that are available at any time for scaling. The presence of such a node allows the cluster autoscaler not to wait for node initialization (which may take several minutes), but to immediately place a load on it.
The value can be an absolute number (for example, 2) or a percentage of desired nodes (for example, 10%). If a percentage is specified, the absolute number is calculated based on the percentage of the maximum number of nodes (the maxPerZone parameter) rounded down, but not less than one.
Pattern:
^[0-9]+%?$ - objectspec.cloudInstances.standbyHolder
Amount of reserved resources.
Used to determine whether to order overprovisioned nodes.
- objectspec.cloudInstances.standbyHolder.notHeldResources
Describes the resources that will not be held (consumed) by the standby holder.
- integer or stringspec.cloudInstances.standbyHolder.notHeldResources.cpu
Describes the amount of CPU that will not be held by standby holder on Nodes from this NodeGroup.
The value can be an absolute number of cpus (for example, 2) as well as a milli representation (for example, 1500m).
Pattern:
^[0-9]+m?$ - integer or stringspec.cloudInstances.standbyHolder.notHeldResources.memory
Describes the amount of memory that will not be held by standby holder on Nodes from this NodeGroup.
The value can be an absolute number of bytes (for example, 128974848) as well as a fixed-point number using one of memory suffixes: G, Gi, M, Mi.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$
- array of stringsspec.cloudInstances.zones
List of availability zones to create instances in.
The default value depends on the cloud provider selected and usually corresponds to all zones of the region being used.
Example:
zones: - Helsinki - Espoo - Tampere
- objectspec.cri
Container runtime parameters.
- objectspec.cri.containerd
Containerd runtime parameters.
If used,
cri.typemust be set toContainerd.- integerspec.cri.containerd.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- objectspec.cri.docker
Docker settings for nodes.
Note. the
Dockeris deprecated.- booleanspec.cri.docker.manage
Enable Docker maintenance from bashible.
Default:
true - integerspec.cri.docker.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- objectspec.cri.notManaged
Settings for not managed CRI for nodes.
- stringspec.cri.notManaged.criSocketPath
Path to CRI socket.
- stringspec.cri.type
Container runtime type.
Value
defaultCRIfrom the initial cluster configration (cluster-configuration.yamlparameter from thed8-cluster-configurationsecret in thekube-systemnamespace) is used if not specified.Note. Docker support is deprecated.
Allowed values:
Docker,Containerd,NotManaged
- objectspec.disruptions
Disruptions settings for nodes.
Example:
disruptions: approvalMode: Automatic automatic: drainBeforeApproval: false windows: - from: '06:00' to: '08:00' days: - Tue - Sun- stringspec.disruptions.approvalMode
The approval mode for disruptive updates:
Manual— disable automatic disruption approval; the alert will be displayed if disruption is needed. Caution. Themasternode group update mode must beManualto avoid issues with draining.Automatic— automatically approve disruption-involving updates.RollingUpdate— in this mode, a new node with new settings will be created; then, the old node will be deleted. Available only for cloud nodes.
If the
RollingUpdatemode is not used, when updating, the node is first drained and then updated (rebooted) and put back into operation (uncordoned). Note that in this case, the cluster must have sufficient resources to accommodate the load while the node being updated is unavailable. In theRollingUpdatemode, the node is replaced by the updated node, i.e., an extra node appears in the cluster for the duration of the update. In cloud infrastructures, theRollingUpdatemode is convenient, for example, if there are no resources in the cluster to temporarily host the load from the node being updated.Default:
AutomaticAllowed values:
Manual,Automatic,RollingUpdate - objectspec.disruptions.automatic
Additional parameters for the
Automaticmode.- booleanspec.disruptions.automatic.drainBeforeApproval
Drain Pods from the nodes before approving disruption.
Caution. This setting ignores (nodes will be approved without draining Pods):
- for the nodeGroup
masterwith a single node; - for a single
readynode in a nodeGroup picked out for Deckhouse placement.
Default:
true - for the nodeGroup
- array of objectsspec.disruptions.automatic.windows
Time windows for node disruptive updates.
- array of stringsspec.disruptions.automatic.windows.days
Days of the week when node could be updated.
Examples:
days: Mondays: Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.disruptions.automatic.windows.from
Required value
Start time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringspec.disruptions.automatic.windows.to
Required value
End time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- objectspec.disruptions.rollingUpdate
Additional parameters for the
RollingUpdatemode.- array of objectsspec.disruptions.rollingUpdate.windows
Time windows for node disruptive updates.
- array of stringsspec.disruptions.rollingUpdate.windows.days
Days of the week when node could be updated.
Examples:
days: Mondays: Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.disruptions.rollingUpdate.windows.from
Required value
Start time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringspec.disruptions.rollingUpdate.windows.to
Required value
End time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- objectspec.kubelet
Kubelet settings for nodes.
- integerspec.kubelet.containerLogMaxFiles
How many rotated log files to store before deleting them.
Warning. This parameter does nothing if CRI type is
Docker.Default:
4Allowed values:
1 <= X <= 20 - stringspec.kubelet.containerLogMaxSize
Maximum log file size before it is rotated.
Warning. This parameter does nothing if CRI type is
Docker.Default:
50MiPattern:
\d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m] - integerspec.kubelet.maxPods
Set the max count of pods per node for given
NodeGroup. When left unspecified, the system automatically determines this limit according to the value of the podSubnetNodeCIDRPrefix ClusterConfiguration parameter:120pods forpodSubnetNodeCIDRPrefix≥24;250pods forpodSubnetNodeCIDRPrefix=23;500pods forpodSubnetNodeCIDRPrefix=22;1000pods forpodSubnetNodeCIDRPrefix≤21.
- stringspec.kubelet.rootDir
Directory path for managing kubelet files (volume mounts,etc).
Default:
/var/lib/kubelet - booleanspec.kubelet.seccompDefault
Use
RuntimeDefaultseccomp profile for workloads that don’t specify seccomp profile explicitly.
- objectspec.nodeTemplate
Specification of some of the fields that will be maintained in all nodes of the group.
Example:
nodeTemplate: labels: environment: production app: warp-drive-ai annotations: ai.fleet.com/discombobulate: 'true' taints: - effect: NoExecute key: ship-class value: frigate- objectspec.nodeTemplate.annotations
Similar to the standard
metadata.annotationsfield.Example:
annotations: ai.fleet.com/discombobulate: 'true' - objectspec.nodeTemplate.labels
Similar to the standard
metadata.labelsfield.Example:
labels: environment: production app: warp-drive-ai - array of objectsspec.nodeTemplate.taints
Similar to the
.spec.taintsfield of the Node object.Available fields:
effect,key, andvalues.Example:
taints: - effect: NoExecute key: ship-class value: frigate- stringspec.nodeTemplate.taints.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringspec.nodeTemplate.taints.key
- stringspec.nodeTemplate.taints.value
- stringspec.nodeType
Required value
The type of nodes this group provides.
Cloud— nodes for this group will be automatically created (and deleted) in the cloud of the specified cloud provider;Static— a static node hosted on a bare metal or virtual machine. The cloud-controller-manager does not manage the node even of one of the cloud providers is enabled;Hybrid— a static node (created manually or using any external tools) hosted in the cloud integrated with one of the cloud provider. This node has the CSI running, and it is managed by the cloud-controller-manager: the Node object automatically gets the information about the zone and region based on the cloud data; if a node gets deleted from the cloud, its corresponding Node object will be deleted in Kubernetes.
Allowed values:
Cloud,Static,Hybrid - objectspec.operatingSystem
Operating System settings for nodes.
- booleanspec.operatingSystem.manageKernel
Enable kernel maintenance from bashible.
Default:
true
- stringspec.systemType
How the node is managed.
Possible values:
Mutable— the classic node configured on the fly by bashible. This is what an unset field means.Immutable— an agent on the node brings it to the state described in a NodeConfig object. bashible is not used.
Once the field names a value, that value can no longer be changed or removed. A NodeGroup that names none can still record one — but not
Immutablewhile it holds nodes bashible has already configured, since those nodes cannot be handed over to the on-node agent.Allowed values:
Mutable,Immutable
- objectstatus
- objectstatus.conditionSummary
- stringstatus.conditionSummary.ready
Status of the condition summary.
Allowed values:
True,False - stringstatus.conditionSummary.statusMessage
Status message about group handling.
- integerstatus.desired
Number of desired machines in the group.
- stringstatus.engine
Machinery used to manage nodes in this group.
The field value indicates which component manages the nodes:
None— nodes in the group are not managed by MCM or CAPI.MCM— nodes in the group are managed by machine-controller-manager.CAPI— nodes in the group are managed by Cluster API.
Allowed values:
None,MCM,CAPI - stringstatus.error
Error message about possible problems with the group handling.
- integerstatus.instances
Number of instances (in any state) in the group.
- stringstatus.kubernetesVersion
The current version of kubernetes on the nodes, or the version to which the nodes will be upgraded.
- array of objectsstatus.lastMachineFailures
- objectstatus.lastMachineFailures.lastOperation
- stringstatus.lastMachineFailures.lastOperation.description
Last operation’s description.
- stringstatus.lastMachineFailures.lastOperation.lastUpdateTime
Timestamp of last status update for operation.
- stringstatus.lastMachineFailures.lastOperation.state
Machine’s operation state.
- stringstatus.lastMachineFailures.lastOperation.type
Type of operation.
- stringstatus.lastMachineFailures.name
Machine’s name.
- stringstatus.lastMachineFailures.ownerRef
Machine owner’s name.
- stringstatus.lastMachineFailures.providerID
Machine’s ProviderID.
- integerstatus.max
Maximum amount of instances in the group.
- integerstatus.min
Minimal amount of instances in the group.
- integerstatus.nodes
Number of Kubernetes nodes (in any state) in the group.
- integerstatus.ready
Number of ready Kubernetes nodes in the group.
- integerstatus.standby
Number of overprovisioned instances in the group.
- integerstatus.upToDate
Number of up-to-date nodes in the group.
Defines the runtime parameters of a node group.
- objectmetadata
- stringmetadata.name
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Maximum length:
42
- objectspec
Required value
- objectspec.chaos
Chaos monkey settings.
Example:
chaos: mode: DrainAndDelete period: 24h- stringspec.chaos.mode
The chaos monkey mode:
DrainAndDelete— drains and deletes a node when triggered;Disabled— leaves this NodeGroup intact.
Default:
DisabledAllowed values:
Disabled,DrainAndDelete - stringspec.chaos.period
The time interval to use for the chaos monkey (can be specified in the Go format).
Default:
6hPattern:
^[0-9]+[mh]{1}$
- objectspec.cloudInstances
Parameter for provisioning the cloud-based VMs.
Caution. Can only be used together with
nodeType: CloudEphemeral.- objectspec.cloudInstances.classReference
Required value
The reference to the
InstanceClassobject. It is unique for eachcloud-provider-*module.- stringspec.cloudInstances.classReference.kind
The kind of the
InstanceClassobject (e.g.,OpenStackInstanceClass). Supported kinds are defined by the installed cloud provider modules and specified in their documentation. - stringspec.cloudInstances.classReference.name
The name of the required
InstanceClassobject (e.g.,finland-medium).
- integerspec.cloudInstances.maxPerZone
Required value
The maximum number of instances for the group in each zone.
This value is used as the upper bound in cluster-autoscaler.
With a value of 0, you need to set capacity for some
InstanceClass. Get more details in the description of the necessaryInstanceClass.Allowed values:
0 <= X - integerspec.cloudInstances.maxSurgePerZone
The maximum number of instances to rollout simultaneously in the group in each zone.
Default:
1Allowed values:
0 <= X - integer
The maximum number of unavailable instances (during rollout) in the group in each zone.
Default:
0Allowed values:
0 <= X - integerspec.cloudInstances.minPerZone
Required value
The minimum number of instances for the group in each zone.
This value is used in the
MachineDeploymentobject and as a lower bound in cluster-autoscaler.Allowed values:
0 <= X - integer or stringspec.cloudInstances.standby
The summary number of overprovisioned nodes for this
NodeGroupall zones.An overprovisioned node is a cluster node on which resources are reserved that are available at any time for scaling. The presence of such a node allows the cluster autoscaler not to wait for node initialization (which may take several minutes), but to immediately place a load on it.
The value can be an absolute number (for example, 2) or a percentage of desired nodes (for example, 10%). If a percentage is specified, the absolute number is calculated based on the percentage of the maximum number of nodes (the maxPerZone parameter) rounded down, but not less than one.
Pattern:
^[0-9]+%?$ - objectspec.cloudInstances.standbyHolder
Amount of reserved resources.
Used to determine whether to order overprovisioned nodes.
- objectspec.cloudInstances.standbyHolder.notHeldResources
Describes the resources that will not be held (consumed) by the standby holder.
- integer or stringspec.cloudInstances.standbyHolder.notHeldResources.cpu
Describes the amount of CPU that will not be held by standby holder on Nodes from this NodeGroup.
The value can be an absolute number of cpus (for example, 2) as well as a milli representation (for example, 1500m).
Pattern:
^[0-9]+m?$ - integer or stringspec.cloudInstances.standbyHolder.notHeldResources.memory
Describes the amount of memory that will not be held by standby holder on Nodes from this NodeGroup.
The value can be an absolute number of bytes (for example, 128974848) as well as a fixed-point number using one of memory suffixes: G, Gi, M, Mi.
Pattern:
^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$
- array of stringsspec.cloudInstances.zones
List of availability zones to create instances in.
The default value depends on the cloud provider selected and usually corresponds to all zones of the region being used.
Example:
zones: - Helsinki - Espoo - Tampere
- objectspec.cri
Container runtime parameters.
- objectspec.cri.containerd
Containerd runtime parameters.
If used,
cri.typemust be set toContainerd.- integerspec.cri.containerd.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- stringspec.cri.type
Container runtime type.
If not specified, the
defaultCRIparameter value of ClusterConfiguration is used.Note. Docker support is deprecated.
Allowed values:
Docker,Containerd,NotManaged
- objectspec.disruptions
Disruptions settings for nodes.
Example:
disruptions: approvalMode: Automatic automatic: drainBeforeApproval: false windows: - from: '06:00' to: '08:00' days: - Tue - Sun- stringspec.disruptions.approvalMode
The approval mode for disruptive updates:
Manual— disable automatic disruption approval; the alert will be displayed if disruption is needed. Caution. Themasternode group update mode must beManualto avoid issues with draining.Automatic— automatically approve disruption-involving updates.RollingUpdate— in this mode, a new node with new settings will be created; then, the old node will be deleted. Available only for cloud nodes.
If the
RollingUpdatemode is not used, when updating, the node is first drained and then updated (rebooted) and put back into operation (uncordoned). Note that in this case, the cluster must have sufficient resources to accommodate the load while the node being updated is unavailable. In theRollingUpdatemode, the node is replaced by the updated node, i.e., an extra node appears in the cluster for the duration of the update. In cloud infrastructures, theRollingUpdatemode is convenient, for example, if there are no resources in the cluster to temporarily host the load from the node being updated.Default:
AutomaticAllowed values:
Manual,Automatic,RollingUpdate - objectspec.disruptions.automatic
Additional parameters for the
Automaticmode.- booleanspec.disruptions.automatic.drainBeforeApproval
Drain Pods from the nodes before approving disruption.
Caution. This setting ignores (nodes will be approved without draining Pods):
- for the nodeGroup
masterwith a single node; - for a single
readynode in a nodeGroup picked out for Deckhouse placement.
Default:
true - for the nodeGroup
- array of objectsspec.disruptions.automatic.windows
Time windows for node disruptive updates.
- array of stringsspec.disruptions.automatic.windows.days
Days of the week when node could be updated.
Examples:
days: Mondays: Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.disruptions.automatic.windows.from
Required value
Start time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringspec.disruptions.automatic.windows.to
Required value
End time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- objectspec.disruptions.rollingUpdate
Additional parameters for the
RollingUpdatemode.- array of objectsspec.disruptions.rollingUpdate.windows
Time windows for node disruptive updates.
- array of stringsspec.disruptions.rollingUpdate.windows.days
Days of the week when node could be updated.
Examples:
days: Mondays: Wed- stringElement of the array
Day of the week.
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.disruptions.rollingUpdate.windows.from
Required value
Start time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
from: '13:00' - stringspec.disruptions.rollingUpdate.windows.to
Required value
End time of disruptive update window (UTC timezone).
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$Example:
to: '18:30'
- objectspec.docker
Docker settings for nodes.
If used,
cri.typemust be set toDocker.Note. the
Dockeris deprecated.- booleanspec.docker.manage
Enable Docker maintenance from bashible.
Default:
true - integerspec.docker.maxConcurrentDownloads
Set the max concurrent downloads for each pull.
Default:
3
- objectspec.kubelet
Kubelet settings for nodes.
- integerspec.kubelet.containerLogMaxFiles
How many rotated log files to store before deleting them.
Warning. This parameter does nothing if CRI type is
Docker.Default:
4Allowed values:
1 <= X <= 20 - stringspec.kubelet.containerLogMaxSize
Maximum log file size before it is rotated.
Warning. This parameter does nothing if CRI type is
Docker.Default:
50MiPattern:
\d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m] - integerspec.kubelet.maxPods
Set the max count of pods per node for given
NodeGroup. When left unspecified, the system automatically determines this limit according to the value of the podSubnetNodeCIDRPrefix ClusterConfiguration parameter:120pods forpodSubnetNodeCIDRPrefix≥24;250pods forpodSubnetNodeCIDRPrefix=23;500pods forpodSubnetNodeCIDRPrefix=22;1000pods forpodSubnetNodeCIDRPrefix≤21.
- stringspec.kubelet.rootDir
Directory path for managing kubelet files (volume mounts,etc).
Default:
/var/lib/kubelet - booleanspec.kubelet.seccompDefault
Use
RuntimeDefaultseccomp profile for workloads that don’t specify seccomp profile explicitly.
- stringspec.kubernetesVersion
The desired minor version of Kubernetes.
By default, it corresponds to the version selected for the cluster globally (see installation documentation) or to the current version of the control plane (if the global version is not defined).
Allowed values:
1.32,1.33,1.34,1.35,1.36Example:
kubernetesVersion: '1.33' - objectspec.nodeTemplate
Specification of some of the fields that will be maintained in all nodes of the group.
Example:
nodeTemplate: labels: environment: production app: warp-drive-ai annotations: ai.fleet.com/discombobulate: 'true' taints: - effect: NoExecute key: ship-class value: frigate- objectspec.nodeTemplate.annotations
Similar to the standard
metadata.annotationsfield.Example:
annotations: ai.fleet.com/discombobulate: 'true' - objectspec.nodeTemplate.labels
Similar to the standard
metadata.labelsfield.Example:
labels: environment: production app: warp-drive-ai - array of objectsspec.nodeTemplate.taints
Similar to the
.spec.taintsfield of the Node object.Available fields:
effect,key, andvalues.Example:
taints: - effect: NoExecute key: ship-class value: frigate- stringspec.nodeTemplate.taints.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringspec.nodeTemplate.taints.key
- stringspec.nodeTemplate.taints.value
- stringspec.nodeType
Required value
The type of nodes this group provides.
Cloud— nodes for this group will be automatically created (and deleted) in the cloud of the specified cloud provider;Static— a static node hosted on a bare metal or virtual machine. The cloud-controller-manager does not manage the node even of one of the cloud providers is enabled;Hybrid— a static node (created manually or using any external tools) hosted in the cloud integrated with one of the cloud provider. This node has the CSI running, and it is managed by the cloud-controller-manager: the Node object automatically gets the information about the zone and region based on the cloud data; if a node gets deleted from the cloud, its corresponding Node object will be deleted in Kubernetes.
Allowed values:
Cloud,Static,Hybrid - objectspec.operatingSystemDeprecated
Operating System settings for nodes.
- booleanspec.operatingSystem.manageKernelDeprecated
Enable kernel maintenance from bashible.
Default:
true
- objectspec.static
Static node parameters
- array of stringsspec.static.internalNetworkCIDRs
Subnet CIDR
- stringspec.systemType
How the node is managed.
Possible values:
Mutable— the classic node configured on the fly by bashible. This is what an unset field means.Immutable— an agent on the node brings it to the state described in a NodeConfig object. bashible is not used.
Once the field names a value, that value can no longer be changed or removed. A NodeGroup that names none can still record one — but not
Immutablewhile it holds nodes bashible has already configured, since those nodes cannot be handed over to the on-node agent.Allowed values:
Mutable,Immutable
- objectstatus
- objectstatus.conditionSummary
- stringstatus.conditionSummary.ready
Status of the condition summary.
Allowed values:
True,False - stringstatus.conditionSummary.statusMessage
Status message about group handling.
- integerstatus.desired
Number of desired machines in the group.
- stringstatus.engine
Machinery used to manage nodes in this group.
The field value indicates which component manages the nodes:
None— nodes in the group are not managed by Machine Controller Manager or CAPI.MCM— nodes in the group are managed by Machine Controller Manager.CAPI— nodes in the group are managed by Cluster API.
Allowed values:
None,MCM,CAPI - stringstatus.error
Error message about possible problems with the group handling.
- integerstatus.instances
Number of instances (in any state) in the group.
- stringstatus.kubernetesVersion
The current version of kubernetes on the nodes, or the version to which the nodes will be upgraded.
- array of objectsstatus.lastMachineFailures
- objectstatus.lastMachineFailures.lastOperation
- stringstatus.lastMachineFailures.lastOperation.description
Last operation’s description.
- stringstatus.lastMachineFailures.lastOperation.lastUpdateTime
Timestamp of last status update for operation.
- stringstatus.lastMachineFailures.lastOperation.state
Machine’s operation state.
- stringstatus.lastMachineFailures.lastOperation.type
Type of operation.
- stringstatus.lastMachineFailures.name
Machine’s name.
- stringstatus.lastMachineFailures.ownerRef
Machine owner’s name.
- stringstatus.lastMachineFailures.providerID
Machine’s ProviderID.
- integerstatus.max
Maximum amount of instances in the group.
- integerstatus.min
Minimal amount of instances in the group.
- integerstatus.nodes
Number of Kubernetes nodes (in any state) in the group.
- integerstatus.ready
Number of ready Kubernetes nodes in the group.
- integerstatus.standby
Number of overprovisioned instances in the group.
- integerstatus.upToDate
Number of up-to-date nodes in the group.
NodeConfig
Short names: nc
Scope: Cluster
Version: v1alpha1
NodeConfig is the desired state of a Deckhouse Engine node, stored at /config/nodeconfig.yaml and as a cluster CRD (crds/nodeconfig.yaml, generated). Keep identical with nodelet’s internal/config/types.go and dhctl’s spec-only mirrors.
- objectspec
Required value
NodeSpec is the desired state of the node.
- array of stringsspec.apiServerEndpoints
APIServerEndpoints is the list of API server URLs the node connects to (via the node-local API proxy).
- stringElement of the array
Pattern:
^(https?://)?(\[[0-9A-Fa-f:]+\]|[A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?([.][A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?)*):(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3})/?$
- objectspec.containerRuntime
ContainerRuntime holds containerd configuration.
- integerspec.containerRuntime.maxConcurrentDownloads
MaxConcurrentDownloads limits parallel image layer downloads. Zero is containerd’s “no limit”, and a NodeGroup takes any integer (crds/node_group.yaml:1638): a value it accepts must be accepted here. The default is bashible’s (candi/bashible/common-steps/all/032_configure_containerd.sh.tpl).
Default:
8Allowed values:
0 <= X - stringspec.containerRuntime.sandboxImage
SandboxImage is the pause image used for pod sandboxes.
Default:
registry.k8s.io/pause:3.10Pattern:
^[^[:space:]]+$
- array of objectsspec.extensions
Extensions are the signed verity sysext images to merge onto the root.
Extension is a signed verity sysext built from a release channel, fetched from the registry-packages-proxy by digest. Optional repository selects the proxy’s per-registry config; optional additionalPath is its “path” parameter.
- stringspec.extensions.additionalPath
AdditionalPath is forwarded to the proxy as the “path” query parameter.
- stringspec.extensions.digest
Required value
Digest is the sha256 digest of the sysext image.
Pattern:
^sha256:[a-f0-9]{64}$ - stringspec.extensions.name
Required value
Name is the extension name (also the sysext image basename).
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Length:
1..63 - stringspec.extensions.repository
Repository optionally selects the proxy’s per-registry client config.
- stringspec.extensions.requestedBy
RequestedBy records who requested the extension (e.g. “node-manager”).
- array of stringsspec.internalNetworkCIDRs
InternalNetworkCIDRs are the subnets the cluster’s own traffic runs on. The node picks the interface holding an address inside one of them and registers with that address; a node with one NIC needs none of this. The pattern is StaticClusterConfiguration’s own (candi/openapi/static_cluster_configuration.yaml): IPv4 only.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectspec.kernel
Kernel holds sysctl settings and kernel modules to load.
- array of objectsspec.kernel.modules
- stringspec.kernel.modules.name
Required value
- array of stringsspec.kernel.modules.params
- objectspec.kernel.sysctl
- objectspec.kubelet
Kubelet holds kubelet configuration parameters.
- stringspec.kubelet.bootstrapToken
BootstrapToken is the bootstrap token used by kubelet to obtain its client certificate on first boot.
- stringspec.kubelet.caCert
CACert is the base64-encoded cluster CA certificate used in the bootstrap-kubelet.conf to verify the API server.
- array of stringsspec.kubelet.clusterDNS
ClusterDNS is the list of DNS server IP addresses for the cluster.
- stringElement of the array
Maximum length:
45
- stringspec.kubelet.clusterDomain
ClusterDomain is the DNS domain for this cluster (e.g. “cluster.local”).
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Maximum length:
253 - integerspec.kubelet.containerLogMaxFiles
ContainerLogMaxFiles is the number of rotated log files to retain.
Default:
4Allowed values:
1 <= X <= 1000 - stringspec.kubelet.containerLogMaxSize
ContainerLogMaxSize is the maximum log file size before rotation (e.g. “50Mi”).
Default:
50Mi - booleanspec.kubelet.externalCloudProvider
ExternalCloudProvider enables –cloud-provider=external so the cloud-controller-manager manages the node (zone, region, providerID).
- stringspec.kubelet.kubernetesVersion
KubernetesVersion is the cluster’s minor version, e.g. “1.34”. It decides which feature gates kubelet is started with (bashible turns DRA gates on by version); without it DRA workloads cannot run on immutable nodes.
Pattern:
^[0-9]+\.[0-9]+$Maximum length:
16 - integerspec.kubelet.maxPods
MaxPods is the maximum number of pods per node.
Default:
120Allowed values:
1 <= X <= 1000 - objectspec.kubelet.nodeLabels
NodeLabels are labels added to the node object when kubelet registers. A NodeGroup caps neither their number nor their shape (crds/node_group.yaml:1915), so neither does this.
- array of objectsspec.kubelet.registerWithTaints
RegisterWithTaints is a list of taints to add to the node object when kubelet registers itself. Only takes effect on initial registration.
Taint represents a Kubernetes taint applied to a node during registration. Key, value and effect take what a NodeGroup takes (crds/node_group.yaml:1944): bare strings and an optional effect, so a taint copied from one still fits.
- stringspec.kubelet.registerWithTaints.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringspec.kubelet.registerWithTaints.key
Required value
- stringspec.kubelet.registerWithTaints.value
- objectspec.kubelet.resourceReservation
ResourceReservation controls how much CPU, memory and disk are held back from pods for the system itself (kubeReserved).
- stringspec.kubelet.resourceReservation.mode
Mode is the reservation policy.
Possible values:
Auto— compute the reservation from the node’s capacity.Off— reserve nothing.
Default:
AutoAllowed values:
Auto,Off
- booleanspec.kubelet.serverTLSBootstrap
ServerTLSBootstrap makes kubelet request a serving certificate from the cluster instead of signing its own. Default true. The zero master sets it to false: nothing approves serving CSRs until Deckhouse is installed.
- objectspec.network
Network holds hostname, DNS, NTP, interfaces and routes.
- objectspec.network.dns
DNS resolver configuration.
- array of stringsspec.network.dns.search
- array of stringsspec.network.dns.servers
- stringspec.network.hostname
- array of objectsspec.network.interfaces
- array of stringsspec.network.interfaces.addresses
Addresses are static CIDR addresses (used when DHCP is false).
- booleanspec.network.interfaces.cluster
Cluster names this NIC the one the cluster’s traffic runs on, for a machine whose addressing spec.internalNetworkCIDRs cannot tell apart.
- booleanspec.network.interfaces.dhcp
Required value
DHCP enables DHCPv4 on the interface.
- stringspec.network.interfaces.gateway
- stringspec.network.interfaces.name
Required value
- objectspec.network.ntp
NTP time-sync configuration.
- array of stringsspec.network.ntp.servers
- array of objectsspec.network.routes
- stringspec.network.routes.gateway
- stringspec.network.routes.name
- array of stringsspec.network.routes.networks
- stringspec.nodeName
Required value
NodeName is the Kubernetes node name this config applies to.
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Length:
1..253 - objectspec.osImage
Required value
OSImage is the image the cluster believes this node should run. Required: a rootfs update is decided by comparing it with what the node recorded at install, and a config that names no image is one no update can start from.
- stringspec.osImage.additionalPath
AdditionalPath is the proxy’s “path” parameter. Empty is right for Deckhouse: every image of a release sits in the repository spec.registry.path already names.
- stringspec.osImage.digest
Required value
Digest pins the exact image, as for an extension. The node records it at install and compares it on every pass, so a tag would say nothing.
Pattern:
^sha256:[a-f0-9]{64}$ - stringspec.osImage.repository
Repository is the registry host the image is fetched from, handed to the registry-packages-proxy as its “repository” parameter. Empty leaves the parameter out, so the proxy uses its own default registry.
- objectspec.registry
Registry is the container registry the node talks to directly, without the registry-packages-proxy. A node bootstrapping a control plane has no proxy yet but must pull images and sysexts; workers leave this empty.
- stringspec.registry.address
Required value
Address is the registry host, optionally with a port, e.g. “registry.deckhouse.io” or “registry.example.com:5000”.
Pattern:
^\S+$ - stringspec.registry.auth
Auth is the base64-encoded “user:password” pair, as it appears in the “auth” field of a docker config.
Pattern:
^[A-Za-z0-9+/]+={0,2}$ - stringspec.registry.ca
CA is a PEM certificate bundle to verify the registry with, for registries signed by a private CA. The image carries the Mozilla bundle and nothing else, so without this a self-signed registry is unreachable.
- stringspec.registry.path
Path is the repository path within the registry, e.g. “/deckhouse/ce”.
- stringspec.registry.scheme
Scheme is HTTPS (default) or HTTP.
Default:
HTTPSAllowed values:
HTTPS,HTTP
- stringspec.registryPackagesProxyAccessTokenB64
RegistryPackagesProxyAccessTokenB64 is a base64-encoded token used to authenticate against the registry packages proxy. Deliberately not marked sensitive: nodelet must read it, and the token is identical on every node.
Pattern:
^(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?)?$ - stringspec.statusToken
StatusToken is the bearer presented to the node’s :50000 status port. Whoever writes the document mints it (dhctl, or the NodeConfigTemplate render for a hand-installed machine); the cluster carries it over untouched, having no way to tell the node a new one. Deliberately not marked sensitive: the apiserver would answer “
" and the carry-over would write that back, destroying the token. - objectspec.storage
Storage selects the target disk for the OS install. The partition layout is fixed (boot/config/data), so only the whole-disk device is needed.
- stringspec.storage.device
Device is the whole-disk block device to install onto, e.g. “/dev/sda”, “/dev/nvme0n1”, or a stable “/dev/disk/by-id/…” path. Ignored when diskSelector is set.
Pattern:
^/dev/[A-Za-z0-9._/-]+$ - objectspec.storage.diskSelector
DiskSelector picks the target disk by attributes instead of a fixed path. It takes priority over device (matching Talos semantics). All specified conditions must match; the first disk that matches is used.
- stringspec.storage.diskSelector.busPath
BusPath matches the hardware bus path (glob).
- stringspec.storage.diskSelector.model
Model matches the device model (glob), e.g. “Samsung*”.
- stringspec.storage.diskSelector.name
Name matches the kernel device name (glob), e.g. “nvme0n1”.
- booleanspec.storage.diskSelector.rotational
Rotational matches spinning (true) vs solid-state (false) disks.
- stringspec.storage.diskSelector.serial
Serial matches the disk serial number (glob).
- stringspec.storage.diskSelector.size
Size matches the disk capacity, optionally with a comparison operator, e.g. “>=100Gi”, “>1Ti”, “512Gi”.
- stringspec.storage.diskSelector.type
Type matches the disk kind.
Allowed values:
SSD,HDD,NVMe,SD - stringspec.storage.diskSelector.wwid
WWID matches the World Wide Identifier (glob).
- array of objectsspec.storage.mounts
Mounts are additional filesystems the node makes available, at /mnt/
or wherever bindTo names. Nothing here is partitioned: only existing partitions and blank whole disks are formatted (when empty) and mounted. Mount is one additional filesystem, at /mnt/
unless bindTo says otherwise. Exactly one of device or partitionSelector names the partition; an empty one is formatted (label = name), an existing filesystem mounted as is. - stringspec.storage.mounts.bindTo
BindTo mounts the filesystem at this path instead of /mnt/
, for a directory something else knows by name (/var/lib/etcd). The directory must be empty: mounting over files hides them, and hidden etcd data is lost data. Pattern:
^/[A-Za-z0-9._/-]+$ - stringspec.storage.mounts.device
Device is the partition to use, e.g. “/dev/sdb1” or a stable “/dev/disk/by-id/…-part1” path.
Pattern:
^/dev/[A-Za-z0-9._/-]+$ - stringspec.storage.mounts.filesystem
Filesystem is what to create when the partition is empty. It says what to create and is not a matching condition.
Default:
ext4Allowed values:
ext4 - stringspec.storage.mounts.mode
Mode is the mode of the filesystem root after mounting, as an octal string, e.g. “0700”. Left alone when unset. A freshly made ext4 has its root at 0755, which is a mode etcd refuses to start on.
Pattern:
^0[0-7]{3}$ - stringspec.storage.mounts.name
Required value
Name identifies the mount, and is both the mount point (/mnt/
) and the filesystem label written when this node formats the partition. Capped at 16 characters because that is the size of the ext4 volume label field. Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Length:
1..16 - objectspec.storage.mounts.partitionSelector
PartitionSelector picks the partition by attributes instead of a fixed path.
- booleanspec.storage.mounts.partitionSelector.blank
Blank makes whole disks selectable, and only ones that carry nothing: no partition table, no filesystem — a cloud disk never touched. Without it a selector sees partitions only; a whole disk is where somebody’s layout lives.
- stringspec.storage.mounts.partitionSelector.fsType
FSType matches the type of the filesystem already present (glob).
- stringspec.storage.mounts.partitionSelector.label
Label matches the filesystem label (glob).
- stringspec.storage.mounts.partitionSelector.name
Name matches the kernel device name (glob), e.g. “sdb1” or “nvme0n1p*”.
- stringspec.storage.mounts.partitionSelector.partLabel
PartLabel matches the GPT partition name (glob).
- stringspec.storage.mounts.partitionSelector.partUUID
PartUUID matches the GPT partition UUID exactly, ignoring case.
- stringspec.storage.mounts.partitionSelector.size
Size matches the size, optionally with a comparison operator, e.g. “>=100Gi”, “>1Ti”, “512Gi”. Without an operator the comparison is “>=”; “=” allows 1%, since a disk rarely reports an exact round size.
- stringspec.storage.mounts.partitionSelector.uuid
UUID matches the filesystem UUID exactly, ignoring case.
- booleanspec.storage.wipe
Wipe controls whether an already-provisioned disk is wiped and re-partitioned. Default false: only an unprovisioned (or non-matching) disk is set up, so an existing layout stays and a reboot never destroys data.
- objectspec.updatePolicy
UpdatePolicy controls how and when the node is updated.
- stringspec.updatePolicy.mode
Mode is the update mode.
Allowed values:
Automatic,Manual - objectspec.updatePolicy.window
Window is the maintenance window for updates.
- array of stringsspec.updatePolicy.window.days
Days are the weekdays the window applies to.
- stringElement of the array
Allowed values:
Mon,Tue,Wed,Thu,Fri,Sat,Sun
- stringspec.updatePolicy.window.from
From is the window start time, “H:MM” or “HH:MM” (24h). The pattern is the NodeGroup one (crds/node_group.yaml:432), which takes a one-digit hour.
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$ - stringspec.updatePolicy.window.to
To is the window end time, same format as From.
Pattern:
^(?:\d|[01]\d|2[0-3]):[0-5]\d$
- objectstatus
Status is reported by the on-node agent after each reconcile pass.
- integerstatus.appliedGeneration
AppliedGeneration is the spec generation the node is actually running; it lags ObservedGeneration while a disruptive config is held for approval. “This node has converged” means AppliedGeneration == metadata.generation.
- array of objectsstatus.conditions
Conditions are the node-level reconcile outcomes (ConfigurationApplied, DisruptionRequired) plus the gate subsystems (APIEndpointsReachable, SysctlApplied); per-extension and per-unit outcomes live in Extensions and Units.
Condition contains details for one aspect of the current state of this API Resource.
- stringstatus.conditions.lastTransitionTime
Required value
lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- stringstatus.conditions.message
Required value
message is a human readable message indicating details about the transition. This may be an empty string.
Maximum length:
32768 - integerstatus.conditions.observedGeneration
observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
Allowed values:
0 <= X - stringstatus.conditions.reason
Required value
reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
Pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$Length:
1..1024 - stringstatus.conditions.status
Required value
status of the condition, one of True, False, Unknown.
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
type of condition in CamelCase or in foo.example.com/CamelCase.
Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$Maximum length:
316
- array of objectsstatus.extensions
Extensions is the outcome of each configured system extension, one entry per extension. Republished on every pass, empty when the pass checked nothing — never “the previous outcome still holds”.
ExtensionStatus is the reconcile outcome of one system extension.
- stringstatus.extensions.digest
Digest is the image digest the node installed for it.
- stringstatus.extensions.message
Message carries the cause when State is Failed.
- stringstatus.extensions.name
Required value
Name is the extension name, matching spec.extensions[].name.
- stringstatus.extensions.state
Required value
State is Ready when the extension is installed and merged, Pending while it is being fetched or waiting for the update window, or Failed with the cause in Message.
Allowed values:
Ready,Pending,Failed
- stringstatus.lastReconcileTime
LastReconcileTime is when the node last finished a reconcile pass — the only thing in the status that ages, so it is what tells a dead agent from a healthy one. Republished coarsely: judge staleness in tens of minutes.
- stringstatus.maintenanceToken
MaintenanceToken is the bearer token an operator presents to the node’s :50000 config-push port once the node has lost the API. Root-equivalent, so the apiserver keeps it out of every answer without the sensitive subresource, which nodes are not granted.
- objectstatus.network
Network is what the node resolved for itself: the interface it took its cluster address from, and that address. Written by the node alone.
- stringstatus.network.address
Address is the address kubelet registered the node with.
- stringstatus.network.clusterInterface
ClusterInterface is the NIC the address was taken from.
- integerstatus.observedGeneration
ObservedGeneration is the latest spec generation the node has processed: it reaches the newest generation as soon as the node has looked at it, even while it is still held for approval (see AppliedGeneration).
- objectstatus.osImage
OSImage is how far the node has got with spec.osImage. Mirrors config.OSImageStatus in the nodelet repository (internal/config/types.go): a field missing here is pruned and the node’s whole status apply fails.
- integerstatus.osImage.attemptsLeft
AttemptsLeft is how many boots the trial image has left to prove itself before the initramfs rolls back.
- stringstatus.osImage.digest
Digest is the image the node is running, as recorded on its config partition. Empty on a node installed before that record existed.
- stringstatus.osImage.failedDigest
FailedDigest is an image this node booted and rolled back from. It is never tried again: a digest names immutable content, so a fixed image is a different digest.
- stringstatus.osImage.slot
Slot is the A/B slot that image lives in (“a” or “b”).
- stringstatus.osImage.trialDigest
TrialDigest is the image staged for the next boot, or on trial in this one. Set only while an update is in flight, which is exactly when Digest still names the old image.
- stringstatus.phase
Phase summarises the node. Ready: running the published config, healthy. Pending: healthy but not yet running the published config (held for approval). Degraded: a subsystem failed, config rejected, or rolled back.
Allowed values:
Ready,Pending,Degraded - array of objectsstatus.units
Units is the outcome of each managed systemd unit (containerd, kubelet and every unit an extension ships), one entry per unit. Republished on every pass like Extensions, and empty when the pass checked nothing.
UnitStatus is the reconcile outcome of one managed systemd unit.
- stringstatus.units.message
Message carries the cause when State is Failed.
- stringstatus.units.name
Required value
Name is the systemd unit name (e.g. containerd.service).
- stringstatus.units.state
Required value
State is Active when the unit is running, Pending when it is queued to be started later this pass, or Failed with the cause in Message.
Allowed values:
Active,Pending,Failed
NodeExtensionRequest
Short names: ner
Scope: Cluster
Version: v1alpha1
Asks for a system extension (a sysext image, optionally with kernel modules) to be merged onto the nodes it selects.
The image is addressed the way the registry-packages-proxy addresses any package: a name, a digest, and an optional repository and path. node-controller forwards these straight into the NodeConfig extension the on-node agent pulls; it resolves no module or ModuleSource.
- stringapiVersion
- stringkind
- objectmetadata
- objectspec
Required value
- array of objectsspec.kernelModules
The modules to load once the extension is merged.
- stringspec.kernelModules.name
Required value
The kernel module name.
Pattern:
^[a-zA-Z0-9][a-zA-Z0-9_-]*$ - array of stringsspec.kernelModules.params
The module parameters, passed as
key=valuestrings.
- objectspec.nodeGroupSelector
Narrows the extension to nodes of the named NodeGroups.
- array of stringsspec.nodeGroupSelector.matchNames
The set of NodeGroup names the extension applies to.
- objectspec.nodeSelector
Narrows the extension to nodes carrying the given labels.
- objectspec.nodeSelector.matchLabels
The set of node labels a node must carry to be selected.
- objectspec.sysext
Required value
Locates the system-extension image to merge, the way the registry-packages-proxy locates any package.
- stringspec.sysext.digest
Required value
The sysext image manifest digest.
Pattern:
^sha256:[a-f0-9]{64}$ - stringspec.sysext.name
Required value
The sysext name: it is matched against the image’s extension-release and installed on the node as
<name>.raw. Copied verbatim into the NodeConfig extension name, so it must be a DNS-label-like token.Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Length:
1..63 - stringspec.sysext.path
The image’s path within the repository (the proxy’s
--rpp-path). Left empty, the repository root is used. - stringspec.sysext.repository
The key the registry-packages-proxy resolves credentials by (its
--rpp-repository), for example a ModuleSource’sspec.registry.repo. Left empty, the image is pulled from the cluster’s main registry.
- objectstatus
- integerstatus.appliedNodes
How many of the selected nodes report the sysext installed and merged. Reported by the nodes themselves: a request can resolve here and still be refused by every node it reaches.
Allowed values:
0 <= X - array of objectsstatus.conditions
The latest details of the request’s progress.
- stringstatus.conditions.lastTransitionTime
Required value
- stringstatus.conditions.message
Required value
Maximum length:
32768 - integerstatus.conditions.observedGeneration
Allowed values:
0 <= X - stringstatus.conditions.reason
Required value
Pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$Length:
1..1024 - stringstatus.conditions.status
Required value
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$Maximum length:
316
- integerstatus.failedNodes
How many of the selected nodes report the sysext refused.
Allowed values:
0 <= X - stringstatus.failureMessage
What the nodes say about the refusal, taken from one of them.
- array of stringsstatus.matchedNodeGroups
The NodeGroups the selectors currently match.
- integerstatus.observedGeneration
The generation of the spec this status reflects.
Allowed values:
0 <= X - stringstatus.phase
Readywhen the sysext resolves to an image the selected nodes can pull,Degradedwhen it cannot (theReadycondition carries the reason).Allowed values:
Ready,Degraded
NodeGroupConfiguration
Short names: ngc
Scope: Cluster
Version: v1alpha1
Executes bash scripts on nodes.
Read more in the module documentation.
- objectspec
Required value
- array of stringsspec.bundles
Required value
Bundles for step execution. You can set
'*'for selecting all bundles.Examples:
bundles: - ubuntu-lts - centos-7bundles: - ubuntu-ltsbundles: - "*"- stringElement of the array
Allowed values:
ubuntu-lts,centos,debian,redos,rosa,astra,altlinux,opensuse,*
- stringspec.content
Required value
A bash script that does the same things you would do in a configuration step.
You can use Go Template to generate a script.
The list of parameters available for use in templates can be retrieved from the
bashible-apiserver-contextSecret as follows:d8 k -n d8-cloud-instance-manager get secrets bashible-apiserver-context -o jsonpath='{.data.input\.yaml}'| base64 -dFor example:
{{- range .nodeUsers }} echo 'Tuning environment for user {{ .name }}' # Some code for tuning user environment {{- end }}You can also use the pre-defined bashbooster commands in the script. For example:
bb-event-on 'bb-package-installed' 'post-install' post-install() { bb-log-info "Setting reboot flag due to kernel was updated" bb-flag-set reboot }Example of using the proxy parameters of ClusterConfiguration resource:
bb-set-proxy curl -I https://google.com bb-unset-proxytest-function-with-proxy() { bb-set-proxy trap bb-unset-proxy RETURN curl -I https://google.com } test-function-with-proxy - array of stringsspec.nodeGroups
Required value
List of NodeGroups to apply the step for. You can set
'*'for selecting all NodeGroups.Examples:
nodeGroups: - master - workernodeGroups: - workernodeGroups: - "*" - integerspec.weight
Order of the step execution.
Default:
100
NodeOperation
Short names: nop
Scope: Cluster
Version: v1alpha1
Describes an operation on a node that interrupts its work (a disruptive operation): a reboot, an eviction of its workload, or the permission a node needs before applying a configuration that cannot be applied without interrupting the node.
An operation is a record of intent, not a switch: it is created once, carried through its phases by node-manager and the on-node agent, and kept afterwards as the history of what was done to the node and why. Editing the spec of an existing operation is rejected — create a new one if needed.
Operations are how disruptive work is coordinated for the nodes of a NodeGroup with systemType: Immutable. The same resource is available to an operator who needs to reboot or drain such a node by hand.
Every operation carries the label node-manager.deckhouse.io/node with the value of .spec.nodeName. node-manager stamps it on operations that reach it without one. It is how operations on the same node find each other, which is what keeps two of them from disagreeing about the state the node was in before either started.
- stringapiVersion
- stringkind
- objectmetadata
- objectspec
Required value
- integerspec.configGeneration
The revision of the node’s NodeConfig this permission covers (
.metadata.generationof the NodeConfig object).The permission is deliberately narrow: it authorises the interruption of the node’s work that one particular configuration needs, so the next published configuration asks for permission again. Only meaningful for
ApproveDisruption.Allowed values:
1 <= X - objectspec.drain
How to evict the workload before the node is interrupted.
The eviction is carried out by a
Drainoperation of its own, created for and owned by this one. It can be watched like any other operation and is removed together with its parent.- booleanspec.drain.skip
Interrupt the node without evicting its workload first.
The workload is then cut off by the interruption instead of being moved, so this is for nodes whose pods must not be evicted (a single-node group, a node running the only replica of something that cannot be moved).
Default:
false
- stringspec.nodeName
Required value
The name of the node the operation applies to.
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Length:
1..253 - stringspec.type
Required value
The operation to perform on the node.
Possible values:
Reboot— reboot the node.Drain— evict the workload from the node and keep it unschedulable. The operation is complete once the workload has been removed from the node. The node stays out of the scheduler until an operator returns it.ApproveDisruption— allow the node to apply a configuration whose application interrupts it (restarting kubelet or the container runtime, rebuilding the system extensions layer, changing the system image).
An
ApproveDisruptionoperation is normally created bynode-managerin answer to a node that asked for it. The other two are meant for an operator.Allowed values:
Reboot,Drain,ApproveDisruption
- objectstatus
- array of objectsstatus.conditions
The latest details of the operation’s progress.
- stringstatus.conditions.lastTransitionTime
Required value
- stringstatus.conditions.message
Required value
Maximum length:
32768 - integerstatus.conditions.observedGeneration
Allowed values:
0 <= X - stringstatus.conditions.reason
Required value
Pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$Length:
1..1024 - stringstatus.conditions.status
Required value
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$Maximum length:
316
- stringstatus.drainDeadline
When the eviction this operation asked for runs out of the time it was given.
It is pinned at the moment the eviction is requested, from the NodeGroup’s
nodeDrainTimeoutSecondas it stood then, because that is the bound the draining controller itself started running to. Deriving it again later would let a change to the NodeGroup cut short a drain that is still running. - stringstatus.finishedAt
When the operation reached a terminal phase. A finished operation is kept as the record of what was done to the node and is collected once it is a day old.
- booleanstatus.nodeWasUnschedulable
Whether the node was already out of the scheduler when the operation reached it.
Releasing the node at the end of the operation restores this value instead of making the node schedulable, so an operation does not quietly undo a cordon an operator put there by hand.
- stringstatus.phase
The current phase of the operation:
Pending— the operation is queued and node-manager has not started it yet;InProgress— the node has been prepared (drained, unless the drain was skipped) and is carrying the operation out;Completed— the operation finished successfully;Failed— the operation failed. Seeconditionsand the events for the reason.
Allowed values:
Pending,InProgress,Completed,Failed - stringstatus.startedAt
When the node was handed the operation. The wait for the node is measured from here.
NodeUser
Scope: Cluster
- v1
- v1alpha1
Defines the linux users to create on all nodes.
The user’s home directory is created in the /home/deckhouse/ directory.
- objectspec
Required value
- array of stringsspec.extraGroups
Node user additional system groups.
Examples:
extraGroups: - dockerextraGroups: - docker - ftp - booleanspec.isSudoer
Persistence of node user in sudo group.
Default:
falseExample:
isSudoer: true - array of stringsspec.nodeGroups
List of NodeGroups to apply the user for.
Default:
["*"]Examples:
nodeGroups: - master - workernodeGroups: - workernodeGroups: - "*" - stringspec.passwordHash
Hashed user password.
The format corresponds to the password hashes in
/etc/shadow. You can get it using the following command:openssl passwd -6.Example:
passwordHash: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC" - stringspec.sshPublicKeyDeprecated
Node user SSH public key.
Either
sshPublicKeyorsshPublicKeysmust be specified.Example:
sshPublicKey: ssh-rsa AAABBB - array of stringsspec.sshPublicKeys
Node user SSH public keys.
Either
sshPublicKeyorsshPublicKeysmust be specified.Example:
sshPublicKeys: - ssh-rsa AAABBB - cert-authority,principals="name" ssh-rsa BBBCCC - numberspec.uid
Required value
Node user ID.
We recommend using the values
>= 1100to avoid conflicts with manually created users.This parameter does not change during the entire resource life.
Allowed values:
1001 <= XExample:
uid: 1100
- objectstatus
User creation status information
- objectstatus.errors
List of user creation errors on each node
Deprecated resource. Support for the resource might be removed in a later release.
Defines the linux users to create on all nodes.
The user’s home directory is created in the /home/deckhouse/ directory.
- objectspec
Required value
- array of stringsspec.extraGroups
Node user additional system groups.
Examples:
extraGroups: - dockerextraGroups: - docker - ftp - booleanspec.isSudoer
Persistence of node user in sudo group.
Default:
falseExample:
isSudoer: true - array of stringsspec.nodeGroups
List of NodeGroups to apply the user for.
Default:
["*"]Examples:
nodeGroups: - master - workernodeGroups: - workernodeGroups: - "*" - stringspec.passwordHash
Hashed user password.
The format corresponds to the password hashes in
/etc/shadow. You can get it using the following command:openssl passwd -6.Example:
passwordHash: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC" - stringspec.sshPublicKeyDeprecated
Node user SSH public key.
Either
sshPublicKeyorsshPublicKeysmust be specified.Example:
sshPublicKey: ssh-rsa AAABBB - array of stringsspec.sshPublicKeys
Node user SSH public keys.
Either
sshPublicKeyorsshPublicKeysmust be specified.Example:
sshPublicKeys: - ssh-rsa AAABBB - cert-authority,principals="name" ssh-rsa BBBCCC - numberspec.uid
Required value
Node user ID.
We recommend using the values
>= 1100to avoid conflicts with manually created users.This parameter does not change during the entire resource life.
Allowed values:
1001 <= XExample:
uid: 1100
SSHCredentials
Scope: Cluster
- v1alpha2
- v1alpha1
Contains credentials required by Cluster API Provider Static (CAPS) to connect over SSH. CAPS connects to the server (virtual machine) defined in the StaticInstance custom resource to manage its state.
A reference to this resource is specified in the credentialsRef parameter of the StaticInstance resource.
- stringapiVersion
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- stringkind
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- objectmetadata
- objectspec
SSHCredentialsSpec defines the desired state of SSHCredentials.
- stringspec.privateSSHKey
Private SSH key in PEM format encoded as base64 string.
If the user does not have permission to view sensitive SSHCredentials data, the API returns
instead of the actual value. - stringspec.sshExtraArgs
A list of additional arguments to pass to the openssh command.
Examples:
sshExtraArgs: "-vvv"sshExtraArgs: "-c chacha20-poly1305@openssh.com"sshExtraArgs: "-c aes256-gcm@openssh.com"sshExtraArgs: "-m umac-64-etm@openssh.com"sshExtraArgs: "-m hmac-sha2-512-etm@openssh.com" - integerspec.sshPort
A port to connect to the host via SSH.
Default:
22Allowed values:
1 <= X <= 65535 - stringspec.sudoPasswordEncoded
Base64 encoded sudo password for the user.
If the user does not have permission to view sensitive SSHCredentials data, the API returns
instead of the actual value. - stringspec.user
Required value
A username to connect to the host via SSH.
Contains credentials required by Cluster API Provider Static (CAPS) to connect over SSH. CAPS connects to the server (virtual machine) defined in the StaticInstance custom resource to manage its state.
A reference to this resource is specified in the credentialsRef parameter of the StaticInstance resource.
- stringapiVersion
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- stringkind
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- objectmetadata
- objectspec
SSHCredentialsSpec defines the desired state of SSHCredentials.
- stringspec.privateSSHKey
Private SSH key in PEM format encoded as base64 string.
If the user does not have permission to view sensitive SSHCredentials data, the API returns
instead of the actual value. - stringspec.sshExtraArgs
A list of additional arguments to pass to the openssh command.
Examples:
sshExtraArgs: "-vvv"sshExtraArgs: "-c chacha20-poly1305@openssh.com"sshExtraArgs: "-c aes256-gcm@openssh.com"sshExtraArgs: "-m umac-64-etm@openssh.com"sshExtraArgs: "-m hmac-sha2-512-etm@openssh.com" - integerspec.sshPort
A port to connect to the host via SSH.
Default:
22Allowed values:
1 <= X <= 65535 - stringspec.sudoPassword
A sudo password for the user.
If the user does not have permission to view sensitive SSHCredentials data, the API returns
instead of the actual value. - stringspec.user
Required value
A username to connect to the host via SSH.
StaticInstance
Scope: Cluster
- v1alpha2
- v1alpha1
StaticInstance describes a machine for the Cluster API Provider Static.
- stringapiVersion
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- stringkind
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- objectmetadata
- objectspec
StaticInstanceSpec defines the desired state of StaticInstance.
- stringspec.address
Required value
The IP address of the host.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ - objectspec.credentialsRef
Required value
The reference to the
SSHCredentialsobject.- stringspec.credentialsRef.apiVersion
API version of the referent.
- stringspec.credentialsRef.fieldPath
If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
- stringspec.credentialsRef.kind
Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- stringspec.credentialsRef.name
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
- stringspec.credentialsRef.namespace
Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- stringspec.credentialsRef.resourceVersion
Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
- stringspec.credentialsRef.uid
UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- objectstatus
StaticInstanceStatus defines the observed state of StaticInstance.
- array of objectsstatus.conditions
Conditions defines current service state of the StaticInstance.
Condition contains details for one aspect of the current state of this API Resource.
- stringstatus.conditions.lastTransitionTime
Required value
lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- stringstatus.conditions.message
Required value
message is a human readable message indicating details about the transition. This may be an empty string.
Maximum length:
32768 - integerstatus.conditions.observedGeneration
observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
Allowed values:
0 <= X - stringstatus.conditions.reason
Required value
reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
Pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$Length:
1..1024 - stringstatus.conditions.status
Required value
status of the condition, one of True, False, Unknown.
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
type of condition in CamelCase or in foo.example.com/CamelCase.
Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$Maximum length:
316
- objectstatus.currentStatus
- stringstatus.currentStatus.lastUpdateTime
- stringstatus.currentStatus.phase
Allowed values:
Error,Pending,Bootstrapping,Running,Cleaning
- objectstatus.machineRef
The reference to the
StaticMachineobject.- stringstatus.machineRef.apiVersion
API version of the referent.
- stringstatus.machineRef.fieldPath
If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
- stringstatus.machineRef.kind
Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- stringstatus.machineRef.name
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
- stringstatus.machineRef.namespace
Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- stringstatus.machineRef.resourceVersion
Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
- stringstatus.machineRef.uid
UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- objectstatus.nodeRef
The reference to the
Nodeobject.- stringstatus.nodeRef.apiVersion
API version of the referent.
- stringstatus.nodeRef.fieldPath
If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
- stringstatus.nodeRef.kind
Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- stringstatus.nodeRef.name
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
- stringstatus.nodeRef.namespace
Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- stringstatus.nodeRef.resourceVersion
Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
- stringstatus.nodeRef.uid
UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
StaticInstance describes a machine for the Cluster API Provider Static.
- stringapiVersion
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- stringkind
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- objectmetadata
- objectspec
StaticInstanceSpec defines the desired state of StaticInstance.
- stringspec.address
Required value
The IP address of the host.
Pattern:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ - objectspec.credentialsRef
Required value
The reference to the
SSHCredentialsobject.- stringspec.credentialsRef.apiVersion
API version of the referent.
- stringspec.credentialsRef.fieldPath
If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
- stringspec.credentialsRef.kind
Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- stringspec.credentialsRef.name
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
- stringspec.credentialsRef.namespace
Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- stringspec.credentialsRef.resourceVersion
Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
- stringspec.credentialsRef.uid
UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- objectstatus
StaticInstanceStatus defines the observed state of StaticInstance.
- array of objectsstatus.conditions
Conditions defines current service state of the StaticInstance.
Condition contains details for one aspect of the current state of this API Resource.
- stringstatus.conditions.lastTransitionTime
Required value
lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
- stringstatus.conditions.message
Required value
message is a human readable message indicating details about the transition. This may be an empty string.
Maximum length:
32768 - integerstatus.conditions.observedGeneration
observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
Allowed values:
0 <= X - stringstatus.conditions.reason
Required value
reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
Pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$Length:
1..1024 - stringstatus.conditions.status
Required value
status of the condition, one of True, False, Unknown.
Allowed values:
True,False,Unknown - stringstatus.conditions.type
Required value
type of condition in CamelCase or in foo.example.com/CamelCase.
Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$Maximum length:
316
- objectstatus.currentStatus
- stringstatus.currentStatus.lastUpdateTime
- stringstatus.currentStatus.phase
Allowed values:
Error,Pending,Bootstrapping,Running,Cleaning
- objectstatus.machineRef
The reference to the
StaticMachineobject.- stringstatus.machineRef.apiVersion
API version of the referent.
- stringstatus.machineRef.fieldPath
If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
- stringstatus.machineRef.kind
Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- stringstatus.machineRef.name
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
- stringstatus.machineRef.namespace
Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- stringstatus.machineRef.resourceVersion
Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
- stringstatus.machineRef.uid
UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- objectstatus.nodeRef
The reference to the
Nodeobject.- stringstatus.nodeRef.apiVersion
API version of the referent.
- stringstatus.nodeRef.fieldPath
If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.
- stringstatus.nodeRef.kind
Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- stringstatus.nodeRef.name
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
- stringstatus.nodeRef.namespace
Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- stringstatus.nodeRef.resourceVersion
Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
- stringstatus.nodeRef.uid
UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids