SupportDump resource
TechPreview
This section describes the SupportDump custom resource (CR) used in the
management API to request collection of logs and Kubernetes objects from a
management or MOSK cluster into a single .tar.gz archive. The archive is
stored on the management cluster nodes, on the local volume created for
supportdump-controller.
Caution
A cluster can have only one support dump collection running at a
time. While a collection is in progress, creation of another SupportDump
object for the same cluster is rejected. Wait for the running collection
to complete or delete the existing object.
The SupportDump CR contains the following fields:
apiVersionAPI version of the object that is
kaas.mirantis.com/v1alpha1.
kindObject type that is
SupportDump.
metadataObject metadata that contains the following fields:
nameName of the
SupportDumpobject.
namespaceNamespace used to create the
SupportDumpobject. Must be equal to the namespace of the target cluster.
specResource specification that contains the following fields:
collectorsList of collectors to run. Each list item enables one built-in collector:
kubernetesObjects,underlayKubernetesLogs, orsystemLogs. The same collector can be included several times with a different configuration. To run a collector with its default settings, use an empty dictionary, for example,underlayKubernetesLogs: {}.kubernetesObjectsCollects Kubernetes objects and pod logs. Contains the following field:
singleObjectCollectionTimeoutTimeout for a single request that collects a Kubernetes object or pod logs. Accepts a duration string with a unit suffix, such as
s,m, orh. For example,45mor1h30m.
underlayKubernetesLogsCollects logs of the underlying Kubernetes cluster. Applies to MKE-based clusters only. The collected data includes logs of the MKE components running in Docker along with the MKE configuration. Contains the following fields:
verboseEnables collection of additional data, such as non-system tasks and services. Boolean.
serviceDrillerEnables the swarm service driller. Boolean.
logLinesSets the maximum number of lines to collect from
journalctl. Integer.
auditEnables collection of audit logs. Boolean.
systemLogsCollects system logs from the cluster machines. If several filters are set, a machine must satisfy all of them for its logs to be collected. Contains the following fields:
nodeLabelsMap of node labels. Logs are collected only from machines that have all the listed labels set in the machine
spec.
machineNamesNames of the machines to collect logs from.
maxSizeMbMaximum size of the resulting archive, in MB.
Caution
The logs that do not fit into the size limit are discarded.
overallTimeoutMaximum duration of the entire collection. When the timeout is reached, the collection stops and everything collected by that moment is archived. Accepts a duration string with a unit suffix, such as
s,m, orh. For example,45mor1h30m. Defaults to10m.
pluginsOptional. List of plugins to run as part of the collection. All plugins run as containers of a single job on the management cluster. Each list item contains the following fields:
imageImage of the container that runs the plugin.
nameName of the plugin. Must be unique within the list and be a valid RFC 1123 DNS label. The plugin output is placed into a subfolder of the resulting archive with the same name.
envKey-value pairs of the plugin-specific environment variables passed into the container.
secretNameOptional. Name of the secret in the same namespace to pass sensitive content to the plugin without exposing it in plain text. The secret is mounted into the container at
/secret.
nodeAccessEnables mounting of the SSH key for the cluster machines into the container at
/ssh. Boolean. Set totrueonly if the plugin requires access to the cluster machines.
The
kubeconfigfile of the target cluster is provided to all plugins as a secret mounted at/kubeconfig/admin.conf. Each plugin writes the data it has collected into the/outputfolder mounted into its container.
targetClusterName of the cluster to collect the data from. The cluster must exist in the same namespace as the
SupportDumpobject.
If the
spec.collectorslist contains thesystemLogscollector, or if at least one plugin hasnodeAccessset totrue, a new SSH key is created for the collection. Its public part is placed into aPublicKeyobject that is added tospec.publicKeysof thetargetClustercluster object. Its private part is available to thesystemLogscollector and is mounted into the plugin containers that require it. Both parts of the key are removed when the collection finishes.
statusStatus of the
SupportDumpCR that contains the following fields:collectorsList of collector statuses in the same order the collectors are listed in
spec.collectors. Each list item contains the following fields:completedAtTime when the collector finished.
messageMessage describing status details of the collector. Omitted if empty.
startedAtTime when the collector started.
statusCollector status. Possible values:
PendingNot processed yet.
InProgressCurrently running.
CompletedCompleted successfully.
FailedFailed. For details, see the
messagefield.
typeCollector type that corresponds to the collector set in
spec.collectors.
completedAtTime when the
SupportDumpprocessing finished.
fileNamePath inside the
podNamepod to copy the resulting archive from.
messageMessage describing status details of the
SupportDumpprocessing. Omitted if empty.
pluginsList of plugin statuses. Has the same structure as the collector statuses, with the plugin
namereplacing the collectortype.
podNameName of the
supportdump-controllerpod that processed the object.
startedAtTime when the
SupportDumpprocessing started.
statusOverall
SupportDumpstatus. Possible values:PendingNot processed yet.
InProgressCurrently running.
CompletedCompleted successfully.
FailedFailed. For details, see the
messagefield.
Caution
The overall status of the dump can be Completed even if some
collectors have the Failed status, as long as at least some data is
collected. The overall Failed status means that nothing has been
collected, that the resulting archive could not be created, or that the job
specification for plugins could not be constructed.
Configuration example for SupportDump
apiVersion: kaas.mirantis.com/v1alpha1
kind: SupportDump
metadata:
name: test
namespace: managed
spec:
collectors:
- kubernetesObjects:
singleObjectCollectionTimeout: 30s
- underlayKubernetesLogs:
verbose: true
serviceDriller: true
logLines: 1000
audit: true
- systemLogs:
nodeLabels:
openstack-control-plane: enabled
machineNames:
- ctl01
- ctl02
maxSizeMb: 1000
overallTimeout: 40m0s
plugins:
- image: <repo>/<image>:<tag>
name: osctl
env:
KUBECONFIG: /kubeconfig/admin.conf
OSCTL_SOS_COMPONENTS: k8s,nova
OSCTL_SOS_NO_ARCHIVE: "true"
OSCTL_SOS_WORKSPACE: /output/
secretName: test-secret
nodeAccess: false
targetCluster: mosk
Example of a completed SupportDump
apiVersion: kaas.mirantis.com/v1alpha1
kind: SupportDump
metadata:
creationTimestamp: "2026-08-27T13:13:03Z"
finalizers:
- kaas.mirantis.com/supportdump-finalizer
generation: 1
name: test
namespace: managed
ownerReferences:
- apiVersion: cluster.k8s.io/v1alpha1
kind: Cluster
name: mosk
uid: 1813aaa4-1b80-47d8-9a9f-46eb97394735
resourceVersion: "57022894"
uid: d2d5bbac-078f-4038-9600-63a66718768e
spec:
collectors:
- kubernetesObjects: {}
- underlayKubernetesLogs: {}
- systemLogs:
nodeLabels:
openstack-control-plane: enabled
overallTimeout: 45m0s
plugins:
- env:
KUBECONFIG: /kubeconfig/admin.conf
OSCTL_SOS_COMPONENTS: k8s,nova
OSCTL_SOS_NO_ARCHIVE: "true"
OSCTL_SOS_WORKSPACE: /output/
image: example/osctl-plugin:0.0.2
name: osctl
targetCluster: mosk
status:
collectors:
- completedAt: "2026-08-27T13:19:15Z"
startedAt: "2026-08-27T13:14:04Z"
status: Completed
type: kubernetesObjects
- completedAt: "2026-08-27T13:19:42Z"
startedAt: "2026-08-27T13:19:15Z"
status: Completed
type: underlayKubernetesLogs
- completedAt: "2026-08-27T13:19:56Z"
startedAt: "2026-08-27T13:19:42Z"
status: Completed
type: systemLogs
completedAt: "2026-08-27T13:20:38Z"
fileName: /dumps/managed-mosk-1787836383.tar.gz
plugins:
- completedAt: "2026-08-27T13:20:36Z"
message: Completed
name: osctl
startedAt: "2026-08-27T13:20:23Z"
status: Completed
podName: supportdump-controller-1
startedAt: "2026-08-27T13:14:04Z"
status: Completed
Example of a failed SupportDump
apiVersion: kaas.mirantis.com/v1alpha1
kind: SupportDump
metadata:
creationTimestamp: "2026-08-26T15:23:40Z"
finalizers:
- kaas.mirantis.com/supportdump-finalizer
generation: 1
name: test
namespace: managed
ownerReferences:
- apiVersion: cluster.k8s.io/v1alpha1
kind: Cluster
name: mosk
uid: b96920a3-7ee2-42d2-b4c3-144cc3afc353
resourceVersion: "55843011"
uid: d24e4962-3f50-4284-b844-1115765162cd
spec:
collectors:
- kubernetesObjects: {}
- underlayKubernetesLogs: {}
- systemLogs:
nodeLabels:
openstack-control-plane: enabled
overallTimeout: 45m0s
plugins:
- env:
KUBECONFIG: /kubeconfig/admin.conf
OSCTL_SOS_COMPONENTS: k8s,nova
OSCTL_SOS_NO_ARCHIVE: "true"
OSCTL_SOS_WORKSPACE: /output/
image: example/osctl-plugin:0.0.2
name: osctl
targetCluster: mosk
status:
collectors:
- completedAt: "2026-08-26T16:09:41Z"
message: 'failed to collect kubernetes events: failed to get list of events: client
rate limiter Wait returned an error: rate: Wait(n=1) would exceed context deadline'
startedAt: "2026-08-26T15:24:41Z"
status: Failed
type: kubernetesObjects
- completedAt: "2026-08-26T16:09:41Z"
message: 'failed to collect MKE logs: stopped waiting for the remote calls to
complete: context deadline exceeded'
startedAt: "2026-08-26T16:09:41Z"
status: Failed
type: underlayKubernetesLogs
- completedAt: "2026-08-26T16:09:41Z"
message: 'failed to collect system logs: stopped waiting for the remote calls
to complete: context deadline exceeded'
startedAt: "2026-08-26T16:09:41Z"
status: Failed
type: systemLogs
completedAt: "2026-08-26T16:09:42Z"
fileName: /dumps/managed-mosk-1787757820.tar.gz
message: 'multiple errors while collecting logs: Failed to get collect job spec:
support dump managed/test has already exceeded the overall timeout'
podName: supportdump-controller-1
startedAt: "2026-08-26T15:24:41Z"
status: Failed
See also