---
id: case-service-unreachable
title: "Pod OK, Service/Ingress không vào được"
shortTitle: "Service path"
track: cases
trackTitle: "Bài toán thực tế DevOps"
order: 2
level: core
status: published
estimatedMinutes: 30
prerequisites:
  - case-hybrid-no-route
next: case-vpn-mtu
reviewedAgainst: 2026-10-29
sources: []
---

# Pod OK, Service/Ingress không vào được

`kubectl exec` curl localhost OK; user báo timeout qua domain. Restart Deployment hiếm khi là câu trả lời đầu — trace path DNAT/LB trước.

## Triệu chứng

Endpoints rỗng hoặc LB unhealthy; 504 qua Ingress.

<div class="net-flow">
<div class="net-step" style="--layer:#dcfce7"><b>Pod</b></div>
<div class="net-arrow">→</div>
<div class="net-step" style="--layer:#dbeafe"><b>Service</b></div>
<div class="net-arrow">→</div>
<div class="net-step" style="--layer:#fef3c7"><b>LB / Ingress</b></div>
<div class="net-arrow">→</div>
<div class="net-step" style="--layer:#e0e7ff"><b>Client</b></div>
</div>

1. `kubectl get endpoints` — có IP pod?
2. Curl ClusterIP từ pod khác namespace.
3. `nc -vz` tới IP listener LB từ ngoài cluster.
4. Health probe trùng port/path app.
5. Ingress: backend name/port, cert SAN.

Egress SNAT (NAT) là chuyện khác — đừng nhầm với path vào.

## Thẻ ôn

### case-service-unreachable-endpoints
kind: command
cue: "504" + "kubectl"

Q: Kiểm backend Service trước?

A: `kubectl get endpoints` — rỗng thì chưa tới LB/NSG.

## Tiếp theo

[VPN: ping nhỏ OK, file lớn fail](./03-vpn-mtu.md)
