Skip to main content
compliance · aws

EKS liveness probe review: why ZopNight no longer raises this at cluster level

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

ZopNight does not currently raise this EKS finding. An earlier version flagged every cluster without evidence, because checking `livenessProbe` settings requires reading each workload through the Kubernetes API. Until per-workload probe data is collected, the rule stays silent; use `kubectl get deployments -A -o json` to find containers without a liveness probe yourself.

Signal and threshold

How ZopNight evaluates EKS liveness probe review: why ZopNight no longer raises this at cluster level.
Field Value
Rule IDsRC-063
Categorycompliance
Severitymedium
Metricnone — pure configuration read
SourceZopNight
Permissions usedeks:DescribeCluster

What a liveness probe protects against

A liveness probe lets the kubelet notice that a container is stuck and restart it. The Kubernetes probe guide describes applications that run for long periods, drift into a broken state such as a deadlock, and cannot recover except by being restarted. Without a probe, the kubelet has no signal to restart such a container, so it stays in its broken state.

Why this rule is switched off

The check was designed at cluster level, but probe settings live on each container in each workload. ZopNight’s EKS cluster record has no view of workload specs, and nothing it collects for the cluster says which containers have probes. The earlier version therefore flagged every EKS cluster unconditionally, which told you nothing. It now raises no finding at all, and it will stay that way until per-workload probe data is available.

Other workload checks, such as Missing CPU/Memory Requests, read workload specs directly and are unaffected.

Auditing probe coverage yourself

List every Deployment container with no liveness probe:

Terminal window
kubectl get deployments -A -o json | jq -r '
.items[] | .metadata as $m
| .spec.template.spec.containers[]
| select(.livenessProbe == null)
| "\($m.namespace)/\($m.name) \(.name)"'

Run the same query against statefulsets and daemonsets. Sidecars and short-lived jobs often do not need a probe, so treat the output as a review list.

Choosing a probe that helps

A liveness probe should detect “stuck”, not “busy”. Common forms are httpGet against a lightweight health endpoint, tcpSocket for services without HTTP, and exec for a command inside the container. Point it at something that fails only when a restart would help.

No saving either way

There was never a dollar figure on this finding. The benefit of good probes is fewer silent failures, not a lower bill.

Adding liveness probes

  1. Add a livenessProbe block to each long-running container that can hang.
  2. Set initialDelaySeconds and periodSeconds from real startup time; the Kubernetes example uses 5 seconds for each. Consider a startup probe for slow-starting apps.
  3. Roll out in a non-production namespace and watch restart counts with kubectl get pods.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·