g u) and appears under the Best practices tab. For version-targeted compatibility analysis, use Upgrade impact.
What it checks
The check set covers three categories. Defaults skip stylistic checks; they flag misconfigurations only.Security
- Containers running as root, running privileged, allowing privilege escalation, or using a writable root filesystem.
- Dangerous capabilities such as
SYS_ADMIN, plus capabilities that are usually unnecessary and should be dropped. hostNetwork,hostPID, andhostIPCaccess.- Container-runtime socket mounts and sensitive host paths.
- Values that look like credentials or tokens stored in ConfigMaps instead of Secrets.
- Automatically mounted ServiceAccount tokens on workloads that may not need Kubernetes API access.
Reliability
- Missing liveness or readiness probes.
- Image tags that are
latestor omitted, and mutable tags used withoutimagePullPolicy: Always. - Single-replica workloads, missing PodDisruptionBudgets, and missing topology-spread constraints.
- Replicas that are all scheduled on one node, leaving no real node-level redundancy.
- Services without matching Pods, Ingresses without their referenced Service, and supported Traefik routes or middleware with missing backends.
- Deprecated Kubernetes API versions.
- Stuck terminating - resources with
metadata.deletionTimestampset past the cleanup window (warning at 5min, danger at 30min). Most controllers complete cleanup within seconds; minutes-long delays usually mean a finalizer’s owning controller is unhealthy or unable to reach a dependency. Findings name the blocking finalizers and point at the controller (Argo CD’sargocd-application-controller, Flux’skustomize-controller/helm-controller/source-controller, etc.) to investigate. Same warning / danger thresholds as the per-resource GitOps lifecycle Issue so the two surfaces agree on severity.
Efficiency
- Missing CPU or memory requests.
- Missing CPU or memory limits.
- ConfigMaps and Secrets that are not referenced by a supported workload, Ingress, or controller configuration.
How to read it
Open Checks → Best practices in the nav rail. You see:- Summary and filters - failing checks and individual findings broken down by severity, with category, framework, and search filters.
- Remediation queue - one row per failing check, ordered by severity and affected-resource count. Expand a row for the rationale, remediation guidance, upstream references, and affected resources.
Configure the checks policy
Some findings are intentional in a particular environment - for example, a sandbox namespace wherelatest tags are acceptable or a system DaemonSet that legitimately needs host access.
Use the settings button on Checks → Best practices to:
- hide findings from an entire namespace;
- enable or disable individual checks globally.
~/.radar/settings.json. Radar ignores kube-system, kube-node-lease, kube-public, and namespaces matching *-system by default.
Remediation guidance
Every check explains why the configuration matters and how to fix it, with upstream references where available. Radar does not apply those changes automatically; make the change through your normal manifest or GitOps workflow, then refresh the scan.API + MCP
Audit findings are available programmatically:GET /api/audit- cluster-wideGET /api/audit/resource/{kind}/{namespace}/{name}- single resource- MCP tool
get_cluster_audit- filterable by category / severity / namespace
See also
- Kubernetes upgrade impact - blockers, review items, and incomplete evidence for a target Kubernetes minor.
- Resource browser - the inline audit chip per row.
- AI via MCP - have an AI explain or remediate findings.
- Fleet checks - audit findings rolled up across all clusters in your org (Cloud).