Deployment / ReplicaSet / StatefulSet / DaemonSet
Deployment
Section titled “Deployment”Replicas mismatch (spec vs available)
Section titled “Replicas mismatch (spec vs available)”kube_deployment_spec_replicas != kube_deployment_status_replicas_availableGeneration mismatch (rollout non completato/osservato)
Section titled “Generation mismatch (rollout non completato/osservato)”kube_deployment_status_observed_generation != kube_deployment_metadata_generationReplicaSet
Section titled “ReplicaSet”Replicas mismatch
Section titled “Replicas mismatch”kube_replicaset_spec_replicas != kube_replicaset_status_ready_replicasStatefulSet
Section titled “StatefulSet”Down (ready < desired)
Section titled “Down (ready < desired)”kube_statefulset_replicas != kube_statefulset_status_replicas_ready > 0Replicas mismatch
Section titled “Replicas mismatch”kube_statefulset_status_replicas_ready != kube_statefulset_status_replicasGeneration mismatch
Section titled “Generation mismatch”kube_statefulset_status_observed_generation != kube_statefulset_metadata_generationUpdate non rollato su tutte le repliche
Section titled “Update non rollato su tutte le repliche”max without (revision) ( kube_statefulset_status_current_revision unless kube_statefulset_status_update_revision)* (kube_statefulset_replicas != kube_statefulset_status_replicas_updated)DaemonSet
Section titled “DaemonSet”Rollout bloccato
Section titled “Rollout bloccato”kube_daemonset_status_number_ready/ kube_daemonset_status_desired_number_scheduled * 100 < 100orkube_daemonset_status_desired_number_scheduled - kube_daemonset_status_current_number_scheduled > 0Misscheduled (pod schedulati dove non dovrebbero)
Section titled “Misscheduled (pod schedulati dove non dovrebbero)”kube_daemonset_status_number_misscheduled > 0CPU/Memoria aggregati per workload (via label del pod)
Section titled “CPU/Memoria aggregati per workload (via label del pod)”Per aggregare al livello Deployment serve joinare kube_pod_info/kube_replicaset_owner con le metriche cAdvisor. Esempio via owner_kind/owner_name di kube_pod_owner:
sum by (namespace, owner_name) ( rate(container_cpu_usage_seconds_total{container!="", container!="POD"}[5m]))* on(namespace, pod) group_left(owner_name) kube_pod_owner{owner_kind="ReplicaSet"}In pratica: più veloce filtrare per
pod=~"<deploy-name>-.*"in ambienti WR quando i nomi sono prevedibili (naming convention del chart/deployment).