status/

directory
v0.33.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2026 License: Apache-2.0

README

d8 status - Cluster Status Report

d8 status prints a single, read-only health snapshot of a running Deckhouse Kubernetes Platform (DKP) cluster. One invocation queries the Kubernetes API (and, for the queue section, execs the Deckhouse controller once) and renders a colorized report covering the control-plane nodes, the Deckhouse pods, and the platform's releases, edition, settings, registry, alerts, CNI modules, and reconciliation queue.

It takes no subcommands and no arguments - it is a dashboard you read, not a tool you drive. Because it only reads, it is safe to run against any cluster you can reach with a kubeconfig.

© Flant JSC 2025


Table of contents


Synopsis

d8 status [flags]

No positional arguments, no subcommands, no aliases.

Global flags

Flag Short Type Default Description
--kubeconfig -k string $KUBECONFIG, else the OS-default kubeconfig (e.g. ~/.kube/config) Path to the kubeconfig file.
--context string current-context of the kubeconfig Name of the kubeconfig context to use.

Unlike d8 system, d8 status does not pre-validate the kubeconfig path; an unreachable cluster or a bad path surfaces as an error when the report runs.


The report

Output is written to stdout and always has the same shape:

Generated by Deckhouse CLI v1.x.y          (faint byline: the d8 version that produced the report)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      Cluster Status Report     ┃          (cyan header)
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┌ Master Nodes Status:                       (nine sections, in the order listed below,
├ ...                                          each drawn with ┌ ├ └ │ box characters)
...

A few properties are worth knowing:

  • Colors auto-strip when piped. Colorization uses fatih/color, which detects a non-terminal stdout, so d8 status > report.txt (or piping into less/tee) yields clean plain text suitable for tickets and CI logs.
  • Sections are independent and best-effort. Each section is collected on its own; if one fails it prints a red Error getting <section>: ... line and the rest of the report still renders. A single unreachable resource never aborts the whole report.
  • Read-only. Every section performs get/list calls (plus one controller queue list exec); nothing in the cluster is modified.
  • Empty states are marked, not errored. A section with no matching objects prints a yellow notice (❗ No ... found, or ✅ No Cluster Alerts found) rather than a red error.

Report sections

The report always contains these nine sections, in this order:

# Section What it reads What it reports
1 Master Nodes Nodes labeled node-role.kubernetes.io/master (cluster-scoped) NAME, STATUS (Ready / NotReady), VERSION (kubelet), IP-ADDRESS (first internal IP)
2 Deckhouse Pods Pods labeled app=deckhouse in d8-system NAME, READY (ready/total containers), STATUS (phase), RESTARTS (summed), AGE
3 Deckhouse Releases deckhousereleases.deckhouse.io/v1alpha1 (cluster-scoped) NAME, PHASE, TRANSITIONTIME (as age), MESSAGE
4 Deckhouse Edition Deployment/deckhouse in d8-system, annotation core.deckhouse.io/edition The edition string (e.g. CE, EE, CSE)
5 Deckhouse ModuleConfig ModuleConfig/deckhouse (deckhouse.io/v1alpha1), field spec.settings The platform settings as a sorted, nested tree (credentials masked - see below)
6 Deckhouse Registry Secret/deckhouse-registry in d8-system Registry (host/path) and Scheme (from the secret's imagesRegistry / scheme keys)
7 Cluster Alerts clusteralerts.deckhouse.io/v1alpha1 (cluster-scoped) SEVERITY, ALERT, SUM - identical alerts aggregated into a count, sorted by severity then name
8 Modules modules.deckhouse.io/v1alpha1 (cluster-scoped) NAME, WEIGHT, SOURCE, PHASE, ENABLED, READY for CNI modules only
9 Deckhouse Queue deckhouse-controller queue list, exec'd in the leader pod The controller's task queue - header line, per-task lines, and the summary

Section behaviors that are easy to miss:

  • Edition reads a single annotation on the deckhouse Deployment. If the annotation is absent, the section renders a red error rather than an empty notice.
  • ModuleConfig settings dumps spec.settings verbatim as an indented tree, masking credentials: any value under a key whose name contains password, secret, token, license, dockercfg, apikey, accesskey, or credential (case-insensitive) is replaced with ***, and that masking is inherited by everything nested beneath such a key. When spec.settings is empty the section prints nothing at all - no header, no placeholder.
  • Cluster Alerts groups duplicate alerts (same severity + name) into a single row with a SUM count; the per-alert phase is read but not shown.
  • Modules is filtered client-side to entries whose name contains cni, and its ENABLED / READY columns are derived from the module's status.conditions (EnabledByModuleConfig / EnabledByModuleManager, and IsReady). A cluster whose CNI module is named differently may show ❗ No CNI modules found.
  • Deckhouse Queue is the only section that leaves the API server: it opens an exec stream into the pod labeled app=deckhouse,leader=true in d8-system (container deckhouse) and runs deckhouse-controller queue list. Note this differs from d8 system queue, which curls the controller's HTTP self-API instead.

Data sources and prerequisites

  • Namespaced reads (d8-system): Deckhouse Pods, Edition (the deckhouse Deployment), Registry (the deckhouse-registry Secret), and the Queue leader pod.
  • Cluster-scoped reads: Master Nodes, Deckhouse Releases, Cluster Alerts, Modules, and the deckhouse ModuleConfig.
  • RBAC: you need read access (get/list) to the resources above, plus - for the queue section specifically - permission to create pods/exec in d8-system. The deckhouse-controller binary must exist in the deckhouse container (it does in a normal install). If there is no leader=true pod, only the queue section errors; the rest of the report is unaffected.
  • Sensitivity: although ModuleConfig credentials are masked, a saved report still contains the registry host, node IP addresses, and alert text. Treat it accordingly when attaching it to a ticket.

Examples

# Full status report
d8 status

# Plain text (colors are auto-stripped when redirected) for a ticket or CI log
d8 status > cluster-status.txt

# Run against a specific cluster / context
d8 status --kubeconfig ~/.kube/prod.config --context prod

# Quick control-plane glance
d8 status | sed -n '/Master Nodes/,/Deckhouse Pods/p'

Notes

  • Age formatting (the pod AGE and release TRANSITIONTIME columns) is humanized to the two largest non-zero units, e.g. 2d 3h, 3h 4m, 5m 7s, 9s. An unset or zero timestamp shows <unknown>; a release timestamp that cannot be parsed shows Parse Error.
  • Column widths adapt to the longest node/alert name, and over-long names are truncated with a ... suffix so rows stay aligned.
  • The report is generated fresh on every run; there is no caching, no watch mode, and no machine-readable (JSON/YAML) output format - it is a human-facing snapshot. For scriptable queue output use d8 system queue; for module state use d8 system module list.

Directories

Path Synopsis
objects
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL