Collect Support Bundles for Edge Cluster Troubleshooting
When deploying or operating Edge clusters, you may encounter issues that require assistance from the Spectro Cloud support team, such as Edge hosts failing to register, pod failures, or provisioning errors. To help our team troubleshoot these issues more effectively, follow this guide to collect support bundles and attach them to your support ticket.
Limitations
- Only the
support-bundle-edge.sh
script is embedded and can run on hosts without an internet connection. Thesupport-bundle-infra.sh
script is not embedded and requires internet access. - The embedded
support-bundle-edge.sh
script is included with the version of Palette agent that was in use at the time of provisioning. It is updated only when Palette agent is upgraded through an ISO or a Palette update. To ensure you are using the most current version, download and run the script manually.
Prerequisites
- Downloaded Scripts
- Embedded Script
- The host you need to troubleshoot has an active internet connection to access the troubleshooting script.
- You are connected to the host using SSH, remote shell, direct terminal access, or another connection method.
- The following tools are available on the host:
journalctl
systemctl
- (Optional) The host has a valid
kubeconfig
file configured andkubectl
installed (required for the full output ofsupport-bundle-infra.sh
).
- You are connected to the host using SSH, remote shell, direct terminal access, or another connection method.
- The following tools are available on the host:
journalctl
systemctl
Run the Troubleshooting Scripts
- Downloaded Scripts
- Embedded Script
Run the Script to Collect Cluster Logs
The support-bundle-infra.sh
script collects cluster-level diagnostics. Follow the steps below on a host with a valid
kubeconfig
and kubectl
installed, typically a control plane node.
-
Set the path to your
kubeconfig
file.export KUBECONFIG=/etc/kubernetes/admin.conf
-
Download and run the
support-bundle-infra.sh
script.curl --remote-name https://software.spectrocloud.com/scripts/support-bundle-infra.sh
bash support-bundle-infra.shThe table below contains the optional flags you can use when running the script.
Longhand Flag Shorthand Flag Description Example --directory
-d
Custom output directory for temporary files and the final archive. -d /var/tmp
--namespaces
-n
Additional namespaces to collect logs from. By default, the script collects the logs from the following namespaces: capa-system
,capi-kubeadm-bootstrap-system
,capi-kubeadm-control-plane-system
,capi-system
,capi-webhook-system
,cert-manager
,default
,harbor
,kube-system
,kube-public
,longhorn-system
,os-patch
,palette-system
,reach-system
,spectro-system
, andsystem-upgrade
.-n hello-universe,hello-world
--resources-namespaced
-r
Additional namespace-scoped resources to collect. By default, the script collects the following namespace-scoped resources: apiservices
,configmaps
,cronjobs
,daemonsets
,deployments
,endpoints
,endpointslices
,events
,hpa
,ingress
,jobs
,leases
,limitranges
,networkpolicies
,poddisruptionbudgets
,pods
,pvc
,replicasets
,resourcequotas
,roles
,rolebindings
,services
,serviceaccounts
, andstatefulsets
.-r certificates.cert-manager.io
--resources-cluster-scoped
-R
Additional cluster-scoped resources to collect. By default, the script collects the following cluster-scoped resources: apiservices
,clusterroles
,clusterrolebindings
,crds
,csr
,mutatingwebhookconfigurations
,namespaces
,nodes
,priorityclasses
,pv
,storageclasses
,validatingwebhookconfigurations
, andvolumeattachments
.-R clusterissuers.cert-manager.io
infoThe default values for flags may change. Refer to the scripts for the most accurate information. For example, you can display the script content in the terminal with the following command.
cat support-bundle-infra.sh
If the script runs successfully, it creates a file in the directory specified by the
-d
flag. If you do not specify-d
, the script saves the file in your home directory by default. The file name follows the pattern<cluster name>-<YYYY-MM-DD>_<HH_MM_SS>.tar.gz
. If the script is unable to determine the cluster name, it defaults tospectro-cluster
. One of the messages the terminal displays contains the name of the created file.Logs are archived in spectro-cluster-2025-05-13_16_50_50.tar.gz
-
Copy the file to your local computer. The command below serves as an example of how to copy the file
spectro-cluster-2025-05-13_16_50_50.tar.gz
from thekairos@10.10.150.150
host to yourDownloads
folder. Run the command on the machine to which you want to copy the file.scp kairos@10.10.150.150:~/spectro-cluster-2025-05-13_16_50_50.tar.gz ~/Downloads/
Run the Script to Collect Edge Host Logs
The support-bundle-edge.sh
script collects host-level diagnostics from an Edge node and, if available, includes
Kubernetes data accessible locally on that host. Follow the steps below on every Edge host you want to troubleshoot.
-
(Optional) Set the path to your
kubeconfig
file.export KUBECONFIG=/etc/kubernetes/admin.conf
If you do not perform this step, the script defaults to using
/run/kubeconfig
if it exists. -
Download the
support-bundle-edge.sh
script and run it as a user with root privileges.curl --remote-name https://software.spectrocloud.com/scripts/support-bundle-edge.sh
sudo bash support-bundle-edge.shThe table below contains the optional flags you can use when running the script.
Longhand Flags Shorthand Flags Description Example --directory
-d
Custom output directory for temporary files and the final archive. -d /var/tmp
--start-days-ago
-s
Number of days in the past to start collecting journald logs from. -s 7
--end-days-ago
-e
Number of days before now to stop collecting journald logs. The value must be smaller than -s
.-e 5
--start-date
-S
Start date for journald log collection. -S 2024-01-01
--end-date
-E
End date for journald log collection. Must be later than -S
.-E 2024-01-06
--lines
-l
Number of log lines to collect from journald logs. -l 500000
--namespaces
-n
Additional namespaces to collect logs from. By default, the script collects the logs from the following namespaces: capi-webhook-system
,cert-manager
,harbor
,kube-system
,kube-public
,longhorn-system
,os-patch
,palette-system
,reach-system
,spectro-system
, andsystem-upgrade
.-n hello-universe,hello-world
--resources-namespaced
-r
Additional namespace-scoped resources to collect. By default, the script collects the following namespace-scoped resources: apiservices
,configmaps
,cronjobs
,daemonsets
,deployments
,endpoints
,endpointslices
,events
,hpa
,ingress
,jobs
,leases
,limitranges
,networkpolicies
,poddisruptionbudgets
,pods
,pvc
,replicasets
,resourcequotas
,roles
,rolebindings
,services
,serviceaccounts
, andstatefulsets
.-r certificates.cert-manager.io
--resources-cluster-scoped
-R
Additional cluster-scoped resources to collect. By default, the script collects the following cluster-scoped resources: apiservices
,clusterroles
,clusterrolebindings
,crds
,csr
,mutatingwebhookconfigurations
,namespaces
,nodes
,priorityclasses
,pv
,storageclasses
,validatingwebhookconfigurations
, andvolumeattachments
.-R clusterissuers.cert-manager.io
--journald-services
-j
By default, the script includes the following journald services: stylus-agent
,stylus-operator
,palette-tui
,spectro-stylus-agent
,spectro-stylus-operator
,spectro-init
,spectro-palette-agent-start
,spectro-palette-agent-initramfs
,spectro-palette-agent-boot
,spectro-palette-agent-network
,spectro-palette-agent-bootstrap
,systemd-timesyncd
,containerd
,kubelet
,k3s
,k3s-agent
,rke2-server
,rke2-agent
, andcos-setup-boot
.-j cloud-init,systemd-resolved
infoThe default values for flags may change. Refer to the scripts for the most accurate information. For example, you can display the script content in the terminal with the following command.
cat support-bundle-infra.sh
If the script runs successfully, it creates a file in the directory specified by the
-d
flag. If you do not specify-d
, the script saves the file in the system's temporary directory (typically/tmp
). The file name follows the pattern<hostname>-<YYYY-MM-DD>_<HH_MM_SS>.tar.gz
. One of the messages the terminal displays contains the created file's name and its path.Logs are archived in /tmp/tmp.qrKKeY1LqA/edge-e965384209c2d45078a29480e90bd275-2025-05-13_16_58_20.tar.gz
infoThe script collects only Helm release secrets from Spectro Cloud namespaces and excludes other Kubernetes secrets to protect sensitive data.
-
Copy the file to your local computer. The command below serves as an example of how to copy the file
edge-e965384209c2d45078a29480e90bd275-2025-05-13_16_58_20.tar.gz
from thekairos@10.10.150.150
host to yourDownloads
folder. Run the command on the machine to which you want to copy the file.scp kairos@10.10.150.150:/tmp/tmp.qrKKeY1LqA/edge-e965384209c2d45078a29480e90bd275-2025-05-13_16_58_20.tar.gz ~/Downloads/
Run the Script to Collect Edge Host Logs
The support-bundle-edge.sh
script collects host-level diagnostics from an Edge node and, if available, includes
Kubernetes data accessible locally on that host. Follow the steps below on every Edge host you want to troubleshoot.
-
(Optional) Set the path to your
kubeconfig
file.export KUBECONFIG=/etc/kubernetes/admin.conf
If you do not perform this step, the script defaults to using
/run/kubeconfig
if it exists. -
Run the
support-bundle-edge.sh
script as a user with root privileges.sudo bash /opt/spectrocloud/scripts/support-bundle-edge.sh
The table below contains the optional flags you can use when running the script.
Longhand Flag Shorthand Flag Description Example --directory
-d
Custom output directory for temporary files and the final archive. -d /var/tmp
--start-days-ago
-s
Number of days in the past to start collecting journald logs from. -s 7
--end-days-ago
-e
Number of days before now to stop collecting journald logs. The value must be smaller than -s
.-e 5
--start-date
-S
Start date for journald log collection. -S 2024-01-01
--end-date
-E
End date for journald log collection. Must be later than -S
.-E 2024-01-06
--lines
-l
Number of log lines to collect from journald logs. -l 500000
--namespaces
-n
Additional namespaces to collect logs from. By default, the script collects the logs from the following namespaces: capi-webhook-system
,cert-manager
,harbor
,kube-system
,kube-public
,longhorn-system
,os-patch
,palette-system
,reach-system
,spectro-system
, andsystem-upgrade
.-n hello-universe,hello-world
--resources-namespaced
-r
Additional namespace-scoped resources to collect. By default, the script collects the following namespace-scoped resources: apiservices
,configmaps
,cronjobs
,daemonsets
,deployments
,endpoints
,endpointslices
,events
,hpa
,ingress
,jobs
,leases
,limitranges
,networkpolicies
,poddisruptionbudgets
,pods
,pvc
,replicasets
,resourcequotas
,roles
,rolebindings
,services
,serviceaccounts
, andstatefulsets
.-r certificates.cert-manager.io
--resources-cluster-scoped
-R
Additional cluster-scoped resources to collect. By default, the script collects the following cluster-scoped resources: apiservices
,clusterroles
,clusterrolebindings
,crds
,csr
,mutatingwebhookconfigurations
,namespaces
,nodes
,priorityclasses
,pv
,storageclasses
,validatingwebhookconfigurations
, andvolumeattachments
.-R clusterissuers.cert-manager.io
--journald-services
-j
Additional journald services to include in logs. By default, the script includes the following journald services: stylus-agent
,stylus-operator
,palette-tui
,spectro-stylus-agent
,spectro-stylus-operator
,spectro-init
,spectro-palette-agent-start
,spectro-palette-agent-initramfs
,spectro-palette-agent-boot
,spectro-palette-agent-network
,spectro-palette-agent-bootstrap
,systemd-timesyncd
,containerd
,kubelet
,k3s
,k3s-agent
,rke2-server
,rke2-agent
, andcos-setup-boot
.-j cloud-init,systemd-resolved
infoThe default values for flags may change. Refer to the scripts for the most accurate information. For example, you can display the script content in the terminal with the following command.
cat support-bundle-edge.sh
If the script runs successfully, it creates a file in the directory specified by the
-d
flag. If you do not specify-d
, the script saves the file in the system's temporary directory (typically/tmp
). The file name follows the pattern<hostname>-<YYYY-MM-DD>_<HH_MM_SS>.tar.gz
. One of the messages the terminal displays contains the created file's name and its path.Logs are archived in /tmp/tmp.qrKKeY1LqA/edge-e965384209c2d45078a29480e90bd275-2025-05-13_16_58_20.tar.gz
infoThe script collects only Helm release secrets from Spectro Cloud namespaces and excludes other Kubernetes secrets to protect sensitive data.
-
Copy the file to your local computer. The command below serves as an example of how to copy the file
edge-e965384209c2d45078a29480e90bd275-2025-05-13_16_58_20.tar.gz
from thekairos@10.10.150.150
host to yourDownloads
folder. Run the command on the machine to which you want to copy the file.scp kairos@10.10.150.150:/tmp/tmp.qrKKeY1LqA/edge-e965384209c2d45078a29480e90bd275-2025-05-13_16_58_20.tar.gz ~/Downloads/
Validate
- Downloaded Scripts
- Embedded Script
Review the files you copied to the Downloads
folder. The scripts archive the collected logs into compressed tarballs
TAR.GAR.
Extract the file named in the format <cluster name>-<YYYY-MM-DD>_<HH_MM_SS>.tar.gz
and verify it contains the k8s
folder with the following subfolders:
cluster-info
cluster-resources
metrics
previous-pod-logs
Extract the file named in the format <hostname>-<YYYY-MM-DD>_<HH_MM_SS>.tar.gz
and ensure it contains the following:
console.log
filehelm
folderjournald
foldernetworking
folderoem
folderrun
foldersysteminfo
folderusr
foldervar
folder
Review the files you copied to the Downloads
folder. The scripts archive the collected logs into compressed tarballs
TAR.GAR.
Extract the file named in the format <hostname>-<YYYY-MM-DD>_<HH_MM_SS>.tar.gz
and ensure it contains the following:
console.log
filehelm
folderjournald
foldernetworking
folderoem
folderrun
foldersysteminfo
folderusr
foldervar
folder
Next Steps
After you have successfully collected support bundles, attach the TAR.GAR archives to the support ticket.