diff --git a/charts/krateo-sse-proxy/templates/deployment.yaml b/charts/krateo-sse-proxy/templates/deployment.yaml index c61ba48..b79d308 100644 --- a/charts/krateo-sse-proxy/templates/deployment.yaml +++ b/charts/krateo-sse-proxy/templates/deployment.yaml @@ -47,18 +47,31 @@ spec: optional: {{ .Values.clickhouse.passwordSecret.optional }} - name: LISTEN_ADDR value: {{ .Values.listenAddr | quote }} + # Lenient liveness tolerance (org standard): the Kubernetes defaults + # (timeoutSeconds: 1, failureThreshold: 3) kill HEALTHY pods under CPU + # contention — a slow-but-alive /health reply counts as a failure and the + # resulting restart storm worsens the contention. Only a truly dead process + # should die: 10s period x 6 failures = 60s of continuous failure before + # a restart. livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + # Readiness stays prompt (5s period, 3 failures) so a genuinely unhealthy + # endpoint is removed from the Service quickly, but timeoutSeconds: 5 keeps + # load alone from flapping the endpoint in and out. readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 3 periodSeconds: 5 + timeoutSeconds: 5 + failureThreshold: 3 resources: {{- toYaml .Values.resources | nindent 12 }} securityContext: diff --git a/charts/otel-collector-daemonset/values.schema.json b/charts/otel-collector-daemonset/values.schema.json index 99bf053..8897d0d 100644 --- a/charts/otel-collector-daemonset/values.schema.json +++ b/charts/otel-collector-daemonset/values.schema.json @@ -528,6 +528,48 @@ } } } + }, + "livenessProbe": { + "type": "object", + "additionalProperties": true, + "properties": { + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + }, + "failureThreshold": { + "type": "integer" + }, + "terminationGracePeriodSeconds": { + "type": "integer" + } + } + }, + "readinessProbe": { + "type": "object", + "additionalProperties": true, + "properties": { + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "failureThreshold": { + "type": "integer" + } + } } }, "description": "Values forwarded to the upstream opentelemetry-collector subchart." diff --git a/charts/otel-collector-daemonset/values.yaml b/charts/otel-collector-daemonset/values.yaml index e2e23c9..3ba4ad7 100644 --- a/charts/otel-collector-daemonset/values.yaml +++ b/charts/otel-collector-daemonset/values.yaml @@ -176,3 +176,18 @@ opentelemetry-collector: requests: cpu: 100m memory: 256Mi + + # Probe tolerances, passed through to the upstream opentelemetry-collector chart's + # templates/_pod.tpl (org standard). The Kubernetes defaults (timeoutSeconds: 1, + # failureThreshold: 3) kill HEALTHY pods under CPU contention — a slow-but-alive + # health reply counts as a failure and the resulting restart storm worsens the + # contention. Liveness is lenient so only a truly dead process dies: implicit + # periodSeconds default 10 x 6 failures = 60s of continuous failure before restart. + livenessProbe: + timeoutSeconds: 5 + failureThreshold: 6 + # Readiness keeps prompt endpoint removal (failureThreshold: 3, implicit 10s period) + # but timeoutSeconds: 5 keeps load alone from flapping the endpoint in and out. + readinessProbe: + timeoutSeconds: 5 + failureThreshold: 3 diff --git a/charts/otel-collector-deployment/values.schema.json b/charts/otel-collector-deployment/values.schema.json index 83ac2cb..c7aa423 100644 --- a/charts/otel-collector-deployment/values.schema.json +++ b/charts/otel-collector-deployment/values.schema.json @@ -515,6 +515,48 @@ } } } + }, + "livenessProbe": { + "type": "object", + "additionalProperties": true, + "properties": { + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + }, + "failureThreshold": { + "type": "integer" + }, + "terminationGracePeriodSeconds": { + "type": "integer" + } + } + }, + "readinessProbe": { + "type": "object", + "additionalProperties": true, + "properties": { + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "failureThreshold": { + "type": "integer" + } + } } }, "description": "Values forwarded to the upstream opentelemetry-collector subchart." diff --git a/charts/otel-collector-deployment/values.yaml b/charts/otel-collector-deployment/values.yaml index 8f8fd38..bea82f0 100644 --- a/charts/otel-collector-deployment/values.yaml +++ b/charts/otel-collector-deployment/values.yaml @@ -263,3 +263,18 @@ opentelemetry-collector: requests: cpu: 100m memory: 256Mi + + # Probe tolerances, passed through to the upstream opentelemetry-collector chart's + # templates/_pod.tpl (org standard). The Kubernetes defaults (timeoutSeconds: 1, + # failureThreshold: 3) kill HEALTHY pods under CPU contention — a slow-but-alive + # health reply counts as a failure and the resulting restart storm worsens the + # contention. Liveness is lenient so only a truly dead process dies: implicit + # periodSeconds default 10 x 6 failures = 60s of continuous failure before restart. + livenessProbe: + timeoutSeconds: 5 + failureThreshold: 6 + # Readiness keeps prompt endpoint removal (failureThreshold: 3, implicit 10s period) + # but timeoutSeconds: 5 keeps load alone from flapping the endpoint in and out. + readinessProbe: + timeoutSeconds: 5 + failureThreshold: 3