Skip to main content
Cilium’s CNI plugin provides transparent pod-to-pod connectivity, including support for DNS A records for pod hostnames. This guide walks through verifying Cilium, deploying pods, inspecting veth interfaces, and testing direct IP and DNS-based communication in a Kubernetes cluster.

1. Verify Cilium Status

First, confirm that Cilium and its components are up and running:
You should see output similar to:
If Envoy DaemonSet is disabled, Cilium is using its embedded proxy mode. For full L7 gateway features, enable the Envoy DaemonSet.

2. Deploy Pods and Observe Interface Creation

Apply a manifest (pods.yaml) to spin up three simple pods in the default namespace:
On your control‐plane node, tail the Cilium daemon logs to watch endpoint creation:
You should observe entries like:

3. Inspect the Pod Interface and Network Namespace

On the node hosting pod1, list the CNI veth pair created by Cilium:
Example output:
Enter the network namespace and inspect eth0:
Result:
This IP matches the address reported in the Cilium logs.

4. Delete and Recreate a Pod

Delete pod1 and observe endpoint cleanup:
Cilium logs will include:
Verify the veth interface is removed:
Recreate pod1:
Watch for regeneration:

5. Test Pod-to-Pod Connectivity by IP

Retrieve the pod IPs:
From pod1, ping pod2 (same node):
Ping pod3 (remote node):
And curl an HTTP server on pod3 (port 80):

6. Pod-to-Pod Communication via DNS A Records

Check the pod’s DNS settings:
Cilium automatically creates DNS A records in the format:
For example, to ping pod3 by DNS:
Or curl by name:
Pod IPs are ephemeral. DNS A records tied to pod IPs can break when the pod restarts. For stable discovery, use a Kubernetes Service.

7. Summary of Commands

Watch Video