Kubernetes keeps calling the node Ready for forty seconds while users already see failures, and the pod on the powered-off machine stays ready=true because its kubelet can no longer contradict itself. Eviction waits another five minutes, then the StatefulSet refuses to recreate its pod and the replacement Deployment pod cannot schedule because the local-path volume is pinned to the dead node. Killing the server node instead shows the opposite shape: containerd keeps the workload running while the API server, Traefik and the observability stack disappear, so the outage is the missing path rather than the missing application. Traefik at one replica is the ingress single point of failure. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
1.9 KiB
Plaintext
29 lines
1.9 KiB
Plaintext
=== 파드 상태의 진실 — Running 인데 노드가 없다 ===
|
|
a2-probe Running true kc-lab-2 <none>
|
|
keycloak-0 Running true kc-lab-2 <none>
|
|
keycloak-1 Running false kc-lab-1 <none>
|
|
postgres-7b474b88c8-2gf27 Running true kc-lab-2 <none>
|
|
|
|
=== 재배치가 시도되었는가 ===
|
|
10m Warning Unhealthy pod/keycloak-0 Readiness probe failed: Get "http://10.42.1.67:9000/health/ready": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
|
|
3m15s Warning NodeNotReady pod/postgres-7b474b88c8-2gf27 Node is not ready
|
|
3m15s Warning NodeNotReady pod/keycloak-0 Node is not ready
|
|
3m15s Warning NodeNotReady pod/a2-probe Node is not ready
|
|
2m27s Warning Unhealthy pod/keycloak-1 Readiness probe failed: Get "http://10.42.0.35:9000/health/ready": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
|
|
2s Warning Unhealthy pod/keycloak-1 Readiness probe failed: HTTP probe failed with statuscode: 503
|
|
|
|
=== 노드 taint — 쿠버네티스가 붙인 것 ===
|
|
node.kubernetes.io/unreachable=:NoSchedule
|
|
node.kubernetes.io/unreachable=:NoExecute
|
|
|
|
=== Prometheus 가 본 것 (kc-lab-1 에 있어 살아남았다) ===
|
|
up{job=keycloak pod=keycloak-1 } = 1
|
|
up{job=keycloak pod=keycloak-0 } = 0
|
|
up{job=kubelet pod=- } = 1
|
|
up{job=kubelet pod=- } = 0
|
|
up{job=node-exporter pod=kc-lab-1 } = 1
|
|
up{job=node-exporter pod=kc-lab-2 } = 0
|
|
up{job=prometheus pod=- } = 1
|
|
|
|
=== 진입점이 처음 40초간 000 이었던 이유 — nginx upstream ===
|