Supported Labels

LabelNoteManaged byApplies to
cluster.x-k8s.io/cluster-nameIt is set on machines linked to a cluster and external objects(bootstrap and infrastructure providers).UserMachines
cluster.x-k8s.io/control-planeIt is set on machines or related objects that are part of a control plane.Cluster APIMachines
cluster.x-k8s.io/control-plane-nameIt is set on machines if they’re controlled by a control plane. The value of this label may be a hash if the control plane name is longer than 63 characters.Cluster APIMachines
cluster.x-k8s.io/deployment-nameIt is set on machines if they’re controlled by a MachineDeployment.Cluster APIMachines
cluster.x-k8s.io/interruptibleIt is used to mark the nodes that run on interruptible instances.UserNodes
cluster.x-k8s.io/pool-nameIt is set on machines if they’re controlled by a MachinePool.Cluster APIMachines
cluster.x-k8s.io/providerIt is set on components in the provider manifest. The label allows one to easily identify all the components belonging to a provider. The clusterctl tool uses this label for implementing provider’s lifecycle operations.UserProvider Components
cluster.x-k8s.io/set-nameIt is set on machines if they’re controlled by MachineSet. The value of this label may be a hash if the MachineSet name is longer than 63 characters.Cluster APIMachines
cluster.x-k8s.io/watch-filterIt can be applied to any Cluster API object. Controllers which allow for selective reconciliation may check this label and proceed with reconciliation of the object only if this label and a configured value is present.Cluster APIAll Cluster API objects
machine-template-hashIt is applied to Machines in a MachineDeployment containing the hash of the template.Cluster APIMachine
topology.cluster.x-k8s.io/deployment-nameIt is set on the generated MachineDeployment objects to track the name of the MachineDeployment topology it represents.Cluster APIMachineDeployment objects
topology.cluster.x-k8s.io/ownedIt is set on all the object which are managed as part of a ClusterTopology.Cluster APIClusterTopology objects

Supported Annotations

AnnotationNoteManaged ByApplies to
cluster.x-k8s.io/cloned-from-groupkindIt is the annotation that stores the group-kind of the template from which the current resource has been cloned from.Cluster APIAny Cluster API resource cloned from a template
cluster.x-k8s.io/cloned-from-nameIt is the annotation that stores the name of the template from which the current resource has been cloned from.Cluster APIAny Cluster API resource cloned from a template
cluster.x-k8s.io/cluster-nameIt is set on nodes identifying the name of the cluster the node belongs to.Cluster APINodes
cluster.x-k8s.io/cluster-namespaceIt is set on nodes identifying the namespace of the cluster the node belongs to.Cluster APINodes
cluster.x-k8s.io/delete-machineIt marks control plane and worker nodes that will be given priority for deletion when KCP or a MachineSet scales down. It is given top priority on all delete policies.UserMachines
cluster.x-k8s.io/disable-machine-createIt can be used to signal a MachineSet to stop creating new machines. It is utilized in the OnDelete MachineDeploymentStrategy to allow the MachineDeployment controller to scale down older MachineSets when Machines are deleted and add the new replicas to the latest MachineSet.Cluster APIMachineset
cluster.x-k8s.io/managed-byIt can be applied to InfraCluster resources to signify that some external system is managing the cluster infrastructure. Provider InfraCluster controllers will ignore resources with this annotation. An external controller must fulfill the contract of the InfraCluster resource. External infrastructure providers should ensure that the annotation, once set, cannot be removed.UserInfraCluster resources
cluster.x-k8s.io/machineIt is set on nodes identifying the machine the node belongs to.Cluster APINodes
cluster.x-k8s.io/owner-kindIt is set on nodes identifying the machine’s owner kind the node belongs to.Cluster APINodes
cluster.x-k8s.io/owner-nameIt is set on nodes identifying the machine’s owner name the node belongs to.Cluster APINodes
cluster.x-k8s.io/pausedIt can be applied to any Cluster API object to prevent a controller from processing a resource. Controllers working with Cluster API objects must check the existence of this annotation on the reconciled object.UserAny Cluster API resource
cluster.x-k8s.io/remediate-machineIt can be applied to a machine to manually mark it for remediation by MachineHealthCheck reconciler.UserMachine
cluster.x-k8s.io/replicas-managed-byIt can be applied to MachinePool resources to signify that some external system is managing infrastructure scaling for that pool. See the MachinePool documentation for more details.Infrastructure ProvidersMachinePool resources
cluster.x-k8s.io/skip-remediationIt is used to mark the machines that should not be considered for remediation by MachineHealthCheck reconciler.UserMachines
clusterctl.cluster.x-k8s.io/block-moveBlockMoveAnnotation prevents the cluster move operation from starting if it is defined on at least one of the objects in scope. Provider controllers are expected to set the annotation on resources that cannot be instantaneously paused and remove the annotation when the resource has been actually paused.ProvidersAny Cluster API resource
clusterctl.cluster.x-k8s.io/delete-for-moveDeleteForMoveAnnotation will be set to objects that are going to be deleted from the source cluster after being moved to the target cluster during the clusterctl move operation. It will help any validation webhook to take decision based on it.Cluster APIAny Cluster API resource
clusterctl.cluster.x-k8s.io/skip-crd-name-preflight-checkCan be placed on provider CRDs, so that clusterctl doesn’t emit an error if the CRD doesn’t comply with Cluster APIs naming scheme. Only CRDs that are referenced by core Cluster API CRDs have to comply with the naming scheme.ProvidersCRDs
controlplane.cluster.x-k8s.io/kubeadm-cluster-configurationIt is a machine annotation that stores the json-marshalled string of KCP ClusterConfiguration. This annotation is used to detect any changes in ClusterConfiguration and trigger machine rollout in KCP.Cluster APIMachines
controlplane.cluster.x-k8s.io/remediation-forIt is a machine annotation that links a new machine to the unhealthy machine it is replacing.Cluster APIMachines
controlplane.cluster.x-k8s.io/remediation-in-progressIt is a KCP annotation that tracks that the system is in between having deleted an unhealthy machine and recreating its replacement.Cluster APIKubeadmControlPlane
controlplane.cluster.x-k8s.io/skip-corednsIt explicitly skips reconciling CoreDNS if set.UserKubeadmControlPlane
controlplane.cluster.x-k8s.io/skip-kube-proxyIt explicitly skips reconciling kube-proxy if set.UserKubeadmControlPlane
machine.cluster.x-k8s.io/certificates-expiryIt captures the expiry date of the machine certificates in RFC3339 format. It is used to trigger rollout of control plane machines before certificates expire. It can be set on BootstrapConfig and Machine objects. The value set on Machine object takes precedence. The annotation is only used by control plane machines.Cluster API/UserBootstrapConfig/Machine
machine.cluster.x-k8s.io/exclude-node-drainingIt explicitly skips node draining if set.UserMachines
machine.cluster.x-k8s.io/exclude-wait-for-node-volume-detachIt explicitly skips the waiting for node volume detaching if set.UserMachines
machinedeployment.clusters.x-k8s.io/desired-replicasIt is the desired replicas for a machine deployment recorded as an annotation in its machine sets. Helps in separating scaling events from the rollout process and for determining if the new machine set for a deployment is really saturated.Cluster APIMachineSets
machinedeployment.clusters.x-k8s.io/max-replicasIt is the maximum replicas a deployment can have at a given point, which is machinedeployment.spec.replicas + maxSurge. Used by the underlying machine sets to estimate their proportions in case the deployment has surge replicas.Cluster APIMachineSets
machinedeployment.clusters.x-k8s.io/revisionIt is the revision annotation of a machine deployment’s machine sets which records its rollout sequence.Cluster APIMachineSet
machinedeployment.clusters.x-k8s.io/revision-historyIt maintains the history of all old revisions that a machine set has served for a machine deployment.Cluster APIMachineSets
machineset.cluster.x-k8s.io/skip-preflight-checksIt can be applied on MachineDeployment and MachineSet resources to specify a comma-separated list of preflight checks that should be skipped during MachineSet reconciliation. Supported preflight checks are: All, KubeadmVersionSkew, KubernetesVersionSkew, ControlPlaneIsStable.UserMachineDeployment and MachineSet resources
pre-drain.delete.hook.machine.cluster.x-k8s.ioIt specifies the prefix we search each annotation for during the pre-drain.delete lifecycle hook to pause reconciliation of deletion. These hooks will prevent removal of draining the associated node until all are removed.UserMachines
pre-terminate.delete.hook.machine.cluster.x-k8s.ioIt specifies the prefix we search each annotation for during the pre-terminate.delete lifecycle hook to pause reconciliation of deletion. These hooks will prevent removal of an instance from an infrastructure provider until all are removed.UserMachines
topology.cluster.x-k8s.io/defer-upgradeIt can be used to defer the Kubernetes upgrade of a single MachineDeployment topology. If the annotation is set on a MachineDeployment topology in Cluster.spec.topology.workers, the Kubernetes upgrade for this MachineDeployment topology is deferred. It doesn’t affect other MachineDeployment topologies.Cluster APIMachineDeployments in Cluster.topology
topology.cluster.x-k8s.io/dry-runIt is an annotation that gets set on objects by the topology controller only during a server side dry run apply operation. It is used for validating update webhooks for objects which get updated by template rotation (e.g. InfrastructureMachineTemplate). When the annotation is set and the admission request is a dry run, the webhook should deny validation due to immutability. By that the request will succeed (without any changes to the actual object because it is a dry run) and the topology controller will receive the resulting object.Cluster APITemplate rotation objects
topology.cluster.x-k8s.io/hold-upgrade-sequenceIt can be used to hold the entire MachineDeployment upgrade sequence. If the annotation is set on a MachineDeployment topology in Cluster.spec.topology.workers, the Kubernetes upgrade for this MachineDeployment topology and all subsequent ones is deferred.Cluster APIMachineDeployments in Cluster.topology
topology.cluster.x-k8s.io/upgrade-concurrencyIt can be used to configure the maximum concurrency while upgrading MachineDeployments of a classy Cluster. It is set as a top level annotation on the Cluster object. The value should be >= 1. If unspecified the upgrade concurrency will default to 1.Cluster APICluster
unsafe.topology.cluster.x-k8s.io/disable-update-class-name-checkIt can be used to disable the webhook check on update that disallows a pre-existing Cluster to be populated with Topology information and Class.UserCluster
unsafe.topology.cluster.x-k8s.io/disable-update-version-checkIt can be used to disable the webhook checks on update that disallows updating the .topology.spec.version on certain conditions.UserCluster