Build1 distinct publisher3 min readUpdated
A dev.to walkthrough traces one packet from 10.244.1.5 to 10.244.2.5. The operationally useful part is not the hop count, it is which route table or outer header you get to read.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A Kubernetes networking series on dev.to published its Level 2 installment, which traces cross-node pod traffic hop by hop using a concrete pair: Pod A at 10.244.1.5 on node-1, Pod B at 10.244.2.5 on node-2 [1][2]. The reason this matters past tutorial value is that the same trace splits into two very different failure surfaces depending on whether your CNI teaches the underlying network about pod subnets or wraps pod packets inside node-to-node packets [10].
Start with the easy case, because it sets the baseline. On a single node the pod's own routing table does the work: a default via 10.244.1.1 out eth0, plus a directly connected 10.244.1.0/24, so a packet to 10.244.1.6 matches the local subnet and leaves through eth0 [4]. From there it is veth to node networking to veth to the peer's eth0 [5]. The article notes the exact mechanics vary by CNI plugin, but that shape holds [5].
Cross the node boundary and the pod's table stops being interesting. The packet, source 10.244.1.5 and destination 10.244.2.5, exits eth0, crosses the veth pair, and lands in node-1's stack, which now has to answer where 10.244.2.5 lives [6]. The conceptual node table is one line per peer: 10.244.1.0/24 local, 10.244.2.0/24 via Node 2 [7]. That is the general form of every cross-node pod flow, Pod A to Node 1 to a route to Node 2 to Pod B [8]. The consequence for on-call work is that the deciding piece of state is not visible from inside the pod at all [3].
Who fills that table in is the CNI's problem, and the article's stated job description for a CNI is simply to make sure the network knows how to reach every pod IP [9]. It lists the mechanisms in play: routing, overlay networking, VXLAN, Geneve, BGP, cloud-native routing, and eBPF [9]. Those collapse into two strategies. Either the physical or cloud network is taught the pod networks directly, giving Pod A to Node 1 to a router to Node 2 to Pod B, or the pod packet is encapsulated so the outer header reads Node1-IP to Node2-IP while carrying 10.244.1.5 to 10.244.2.5 inside [10][11]. The article puts BGP directly after its section on routing without an overlay, that is, as the way those pod-subnet routes get distributed [16].
The debugging split follows mechanically. On the encapsulated path, a capture taken on the node uplink shows node addresses in the outer header, and the pod addresses exist only in the payload, so anything you filter or ACL on the underlay is filtering node traffic [1]. On the plain-routed path, the pod address is what the underlay forwards on, so the artifact you read is the route table and whatever advertised it, not a decapsulated inner frame [2].
Two things worth pinning down for your own clusters. First, the article is explicit that Kubernetes does not mandate an overlay [13], so this is a per-cluster fact you look up rather than assume, and the model only promises that every pod can reach every pod without anyone hand-managing per-pod routes [3]. Second, pod IPs are not internet-routable [14], which is where the series goes next, into Services [15].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The article is Level 2 of a Kubernetes networking series on dev.to; Level 0 covered core Linux networking primitives and Level 1 covered how a pod gets its own network namespace, eth0 interface and IP address. Level 2 promises a full hop-by-hop trace of cross-node pod traffic including routing, overlay networking, VXLAN and BGP.
The worked scenario is Pod A with IP 10.244.1.5 on node-1 and Pod B with IP 10.244.2.5 on node-2, with Pod A sending traffic 10.244.1.5 to 10.244.2.5.
The article states the Kubernetes networking model as: every pod should be able to communicate with every other pod, without anyone needing to manually manage routes for each pod.
Every pod has its own routing table; the example given is 'default via 10.244.1.1 dev eth0' and '10.244.1.0/24 dev eth0'. When Pod A targets 10.244.1.6, Linux finds it falls within 10.244.1.0/24 and sends the packet out eth0.
For two pods on the same node the conceptual flow is Pod A, eth0, veth, node networking, veth, eth0, Pod B; the article says the exact implementation depends on the CNI plugin but the core idea (Pod A to node networking to Pod B) holds.
In the cross-node case Pod A sends a packet with source 10.244.1.5 and destination 10.244.2.5; it leaves the pod through eth0, crosses the veth pair and lands on Node 1's networking stack, which must then answer the question 'Where is 10.244.2.5?'
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Self-consistent explainer, single uncorroborated source
Every claim traces to one dev.to tutorial. The mechanics described (pod route lookup, veth handoff, per-node pod CIDR routes, VXLAN encapsulation, BGP-distributed routes) are internally coherent and concretely worked through with addresses, but nothing is corroborated by upstream documentation, a second publisher, code, or a captured packet trace, and the BGP section is truncated in the captured body.
No adoption signal in supplied sources
The cluster contains no release, deployment, benchmark, pricing, licensing or usage disclosure. A tutorial describing generic Kubernetes networking mechanics provides no measurable uptake of any specific technology, so no adoption observations were recorded and adoption cannot be scored.
Nearly aligned; promised trace slightly exceeds delivered depth
Framing is didactic rather than promotional: no vendor is favoured, no performance or superiority claim is made, and the piece explicitly notes Kubernetes does not mandate an overlay. The only overstatement is scope -- it promises a 'full hop-by-hop trace' including VXLAN and BGP, while specific CNI behaviour is deferred to a later installment and the BGP material is truncated in the captured body.
Audience-building tutorial, no disclosed vendor stake
The visible incentive is series continuation and readership on a developer-content platform: the post is numbered within a course-like sequence, references earlier levels, and closes by pointing readers to the next installment on Services. No product, sponsorship, employer or vendor interest is disclosed or implied, and no named CNI is promoted, so distortion pressure is low.
Moderate on mechanics, low on significance
Confidence in what the source says is high because the cluster body is verbatim and detailed, and confidence in the described mechanics is reasonable because they are standard and internally consistent. Confidence is capped by having a single uncorroborated publisher, a truncated BGP section, and no adoption evidence at all, which leaves the story's real-world significance unmeasured.
build
Kubernetes Services scale in the dataplane, and every node keeps its own copy of the map1 distinct publisher
build
Deleting kube-proxy moves your service traffic where your SIEM cannot follow it1 distinct publisher
build
Rate limit your MCP servers, because a retrying agent turns one error into a billing incident1 distinct publisher
build
Your meter now runs on someone else's machine: signed receipts, fsync, and failing open1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 15, 2026