{"id":30953,"date":"2024-02-20T08:36:39","date_gmt":"2024-02-20T07:36:39","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=30953"},"modified":"2024-03-01T16:34:01","modified_gmt":"2024-03-01T15:34:01","slug":"kubernetes-networking-by-using-cilium-intermediate-level-part-1","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/","title":{"rendered":"Kubernetes Networking by Using Cilium &#8211; Intermediate Level &#8211; Network Interfaces"},"content":{"rendered":"\n<p>If you are new or uneasy with networking in Kubernetes, you may benefit from my <a href=\"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-beginner-level\/\" target=\"_blank\" rel=\"noreferrer noopener\">previous blog for beginner level<\/a>. In this blog post I will show you in a Kubernetes cluster what a building and its networking components look like. As a reminder, below is the picture I drew in my previous blog to illustrate the networking in a Kubernetes cluster with Cilium:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"586\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png\" alt=\"Kubernetes networking with Cilium\" class=\"wp-image-30956\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-300x172.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-768x440.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3.png 1334w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>If you want to understand this networking in Kubernetes in more details, read on, this blog post is for you! I&#8217;ll consider you know the basics about Kubernetes and how to interact with it, otherwise you may find our <a href=\"https:\/\/www.dbi-services.com\/courses\/docker-and-kubernetes-essential-skills\/\" target=\"_blank\" rel=\"noreferrer noopener\">training course<\/a> on it very interesting (in English or in French)!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-diving-into-the-ip-addresses-configuration\">Diving into the IP Addresses configuration<\/h2>\n\n\n\n<p>Let&#8217;s start by checking our environment and update our picture with real information from our Kubernetes cluster:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl get no -owide\nNAME                      STATUS   ROLES           AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION      CONTAINER-RUNTIME\nmycluster-control-plane   Ready    control-plane   113d   v1.27.3   172.18.0.3    &lt;none&gt;        Debian GNU\/Linux 11 (bullseye)   5.15.0-94-generic   containerd:\/\/1.7.1\nmycluster-worker          Ready    &lt;none&gt;          113d   v1.27.3   172.18.0.2    &lt;none&gt;        Debian GNU\/Linux 11 (bullseye)   5.15.0-94-generic   containerd:\/\/1.7.1\nmycluster-worker2         Ready    &lt;none&gt;          113d   v1.27.3   172.18.0.4    &lt;none&gt;        Debian GNU\/Linux 11 (bullseye)   5.15.0-94-generic   containerd:\/\/1.7.1\n\n$ kubectl get po -n networking101 -owide\nNAME                        READY   STATUS    RESTARTS      AGE     IP            NODE                NOMINATED NODE   READINESS GATES\nbusybox-c8bbbbb84-fmhwc     1\/1     Running   1 (24m ago)   3d23h   10.10.1.164   mycluster-worker2   &lt;none&gt;           &lt;none&gt;\nbusybox-c8bbbbb84-t6ggh     1\/1     Running   1 (24m ago)   3d23h   10.10.2.117   mycluster-worker    &lt;none&gt;           &lt;none&gt;\nnetshoot-7d996d7884-fwt8z   1\/1     Running   0             79s     10.10.2.121   mycluster-worker    &lt;none&gt;           &lt;none&gt;\nnetshoot-7d996d7884-gcxrm   1\/1     Running   0             80s     10.10.1.155   mycluster-worker2   &lt;none&gt;           &lt;none&gt;\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"497\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-2-3-1024x497.png\" alt=\"Kubernetes networking interfaces with Cilium\" class=\"wp-image-31003\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-2-3-1024x497.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-2-3-300x146.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-2-3-768x373.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-2-3-1536x745.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-2-3.png 1884w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can now see for real that the IP subnets of the pods are different than the one of the nodes. Also the IP subnet of pods on each node is different from each other. If you are not sure why, you are perfectly right because it is not so clear at this stage. So let&#8217;s clarify it by checking our Cilium configuration.<\/p>\n\n\n\n<p>I&#8217;ve told you in my previous blog that there is one Cilium Agent per building. This Agent is a pod itself and he takes care about networking in the node. This is what they look like in our cluster:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n$ kubectl get po -n kube-system -owide|grep cilium\ncilium-9zh9s                                      1\/1     Running   5 (65m ago)   113d   172.18.0.3    mycluster-control-plane   &lt;none&gt;           &lt;none&gt;\ncilium-czffc                                      1\/1     Running   5 (65m ago)   113d   172.18.0.4    mycluster-worker2         &lt;none&gt;           &lt;none&gt;\ncilium-dprvh                                      1\/1     Running   5 (65m ago)   113d   172.18.0.2    mycluster-worker          &lt;none&gt;           &lt;none&gt;\ncilium-operator-6b865946df-24ljf                  1\/1     Running   5 (65m ago)   113d   172.18.0.2    mycluster-worker          &lt;none&gt;           &lt;none&gt;\n<\/pre><\/div>\n\n\n<p>There is two things to notice here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Cilium Agent is a Daemonset so that is how you make sure to always have one on each node of our cluster. As it is a pod, it also gets an IP Address&#8230; but wait a minute&#8230; this is the same IP Address as the node! Exactly! This is a special case for pods IP Address assignation, usually for system pods that need direct access to the node (host) network. If you look at the pods in the kube-system namespace, you&#8217;ll see most of them uses the node IP Address.<\/li>\n\n\n\n<li>The Cilium Operator pod is responsible for IP address management in the cluster and so it gives to each Cilium Agent its range to use.<\/li>\n<\/ul>\n\n\n\n<p>Now you want to see which IP range is used by each node right? Let&#8217;s just check that Cilium Agent on each node as we have found their name above:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [3,7]; title: ; notranslate\" title=\"\">\n$ kubectl exec -it -n kube-system cilium-dprvh -- cilium debuginfo | grep IPAM\nDefaulted container &quot;cilium-agent&quot; out of: cilium-agent, config (init), mount-cgroup (init), apply-sysctl-overwrites (init), mount-bpf-fs (init), clean-cilium-state (init), install-cni-binaries (init)\nIPAM:                   IPv4: 5\/254 allocated from 10.10.2.0\/24,\n\n$ kubectl exec -it -n kube-system cilium-czffc -- cilium debuginfo | grep IPAM\nDefaulted container &quot;cilium-agent&quot; out of: cilium-agent, config (init), mount-cgroup (init), apply-sysctl-overwrites (init), mount-bpf-fs (init), clean-cilium-state (init), install-cni-binaries (init)\nIPAM:                   IPv4: 5\/254 allocated from 10.10.1.0\/24,\n<\/pre><\/div>\n\n\n<p>You can now see the different IP subnet on each node. In my previous blog I told you that an IP Address belong to a group and it uses the subnet mask. This subnet mask is here \/24 which means for the first node that any address starting with 10.10.2 belongs to the same group. For the second node it is 10.10.1 and so they are both in a separate group or IP subnet.<\/p>\n\n\n\n<p>What now about checking the interfaces that are the doors of our drawing?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-diving-into-the-interfaces-configuration\">Diving into the interfaces configuration<\/h2>\n\n\n\n<p>Let&#8217;s explore our buildings and see what we could find out! We are going to start with our four pods:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [15,17,29,31,43,45,57,59]; title: ; notranslate\" title=\"\">\n$ kubectl get po -n networking101 -owide\nNAME                        READY   STATUS    RESTARTS       AGE    IP            NODE                NOMINATED NODE   READINESS GATES\nbusybox-c8bbbbb84-fmhwc     1\/1     Running   1 (125m ago)   4d1h   10.10.1.164   mycluster-worker2   &lt;none&gt;           &lt;none&gt;\nbusybox-c8bbbbb84-t6ggh     1\/1     Running   1 (125m ago)   4d1h   10.10.2.117   mycluster-worker    &lt;none&gt;           &lt;none&gt;\nnetshoot-7d996d7884-fwt8z   1\/1     Running   0              103m   10.10.2.121   mycluster-worker    &lt;none&gt;           &lt;none&gt;\nnetshoot-7d996d7884-gcxrm   1\/1     Running   0              103m   10.10.1.155   mycluster-worker2   &lt;none&gt;           &lt;none&gt;\n\n$ kubectl exec -it -n networking101 busybox-c8bbbbb84-t6ggh -- ip a\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host\n       valid_lft forever preferred_lft forever\n8: eth0@if9: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 qdisc noqueue qlen 1000\n    link\/ether 9e:80:70:0d:d9:37 brd ff:ff:ff:ff:ff:ff\n    inet 10.10.2.117\/32 scope global eth0\n       valid_lft forever preferred_lft forever\n    inet6 fe80::9c80:70ff:fe0d:d937\/64 scope link\n       valid_lft forever preferred_lft forever\n\n$ kubectl exec -it -n networking101 netshoot-7d996d7884-fwt8z -- ip a\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host\n       valid_lft forever preferred_lft forever\n12: eth0@if13: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether ea:c4:71:d6:4f:a0 brd ff:ff:ff:ff:ff:ff link-netnsid 0\n    inet 10.10.2.121\/32 scope global eth0\n       valid_lft forever preferred_lft forever\n    inet6 fe80::e8c4:71ff:fed6:4fa0\/64 scope link\n       valid_lft forever preferred_lft forever\n\n$ kubectl exec -it -n networking101 netshoot-7d996d7884-gcxrm -- ip a\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host\n       valid_lft forever preferred_lft forever\n12: eth0@if13: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether be:57:3d:54:40:f1 brd ff:ff:ff:ff:ff:ff link-netnsid 0\n    inet 10.10.1.155\/32 scope global eth0\n       valid_lft forever preferred_lft forever\n    inet6 fe80::bc57:3dff:fe54:40f1\/64 scope link\n       valid_lft forever preferred_lft forever\n\n$ kubectl exec -it -n networking101 busybox-c8bbbbb84-fmhwc -- ip a\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host\n       valid_lft forever preferred_lft forever\n10: eth0@if11: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 qdisc noqueue qlen 1000\n    link\/ether 2a:7f:05:a0:69:db brd ff:ff:ff:ff:ff:ff\n    inet 10.10.1.164\/32 scope global eth0\n       valid_lft forever preferred_lft forever\n    inet6 fe80::287f:5ff:fea0:69db\/64 scope link\n       valid_lft forever preferred_lft forever\n<\/pre><\/div>\n\n\n<p>You can see that each container has only one network interface in addition to its local loopback. The format is for example <strong>8: eth0@if9<\/strong> which means the interface in the container has the number 9 and is linked to its pair interface number 8 of the node it is hosted on. These are the 2 doors connected by a corridor in my drawing.<\/p>\n\n\n\n<p>Then check the nodes network interfaces:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [10,12,14,16,18,26,30,42,44,46,52,54,60,62]; title: ; notranslate\" title=\"\">\n$ sudo docker exec -it mycluster-worker ip a\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host\n       valid_lft forever preferred_lft forever\n2: cilium_net@cilium_host: &lt;BROADCAST,MULTICAST,NOARP,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether 5e:84:64:22:90:7f brd ff:ff:ff:ff:ff:ff\n3: cilium_host@cilium_net: &lt;BROADCAST,MULTICAST,NOARP,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether ca:7e:e1:cc:4e:74 brd ff:ff:ff:ff:ff:ff\n    inet 10.10.2.205\/32 scope global cilium_host\n       valid_lft forever preferred_lft forever\n4: cilium_vxlan: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/ether f6:bf:81:9b:e2:c5 brd ff:ff:ff:ff:ff:ff\n5: eth0@if6: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0\n    inet 172.18.0.2\/16 brd 172.18.255.255 scope global eth0\n       valid_lft forever preferred_lft forever\n    inet6 fc00:f853:ccd:e793::2\/64 scope global nodad\n       valid_lft forever preferred_lft forever\n    inet6 fe80::42:acff:fe12:2\/64 scope link\n       valid_lft forever preferred_lft forever\n7: lxc_health@if6: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether 8a:de:c1:2c:f5:83 brd ff:ff:ff:ff:ff:ff link-netnsid 1\n9: lxc4a891387ff1a@if8: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether d6:21:74:eb:67:6b brd ff:ff:ff:ff:ff:ff link-netns cni-67a5da05-a221-ade5-08dc-64808339ad05\n11: lxc5b7b34955e61@if10: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether f2:80:da:a5:17:74 brd ff:ff:ff:ff:ff:ff link-netns cni-0b438679-e5d3-d429-85c0-b6e3c8914250\n13: lxc73d2e1d7cf4f@if12: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether f6:87:b6:c3:a6:45 brd ff:ff:ff:ff:ff:ff link-netns cni-f608f13c-1869-6134-3d6b-a0f76fd6d483\n\n$ sudo docker exec -it mycluster-worker2 ip a\n1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n    inet 127.0.0.1\/8 scope host lo\n       valid_lft forever preferred_lft forever\n    inet6 ::1\/128 scope host\n       valid_lft forever preferred_lft forever\n2: cilium_net@cilium_host: &lt;BROADCAST,MULTICAST,NOARP,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether f2:91:2b:31:1f:47 brd ff:ff:ff:ff:ff:ff\n3: cilium_host@cilium_net: &lt;BROADCAST,MULTICAST,NOARP,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether be:7f:e0:2b:d6:b1 brd ff:ff:ff:ff:ff:ff\n    inet 10.10.1.55\/32 scope global cilium_host\n       valid_lft forever preferred_lft forever\n4: cilium_vxlan: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000\n    link\/ether e6:c8:8d:5d:1e:2d brd ff:ff:ff:ff:ff:ff\n6: lxc_health@if5: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether d2:cf:ec:4c:51:b6 brd ff:ff:ff:ff:ff:ff link-netnsid 1\n8: lxcdc5fb9751595@if7: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether fe:b4:3a:e0:67:a3 brd ff:ff:ff:ff:ff:ff link-netns cni-c0d4bea2-92fd-03fb-ba61-3656864d8bd7\n9: eth0@if10: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether 02:42:ac:12:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0\n    inet 172.18.0.4\/16 brd 172.18.255.255 scope global eth0\n       valid_lft forever preferred_lft forever\n    inet6 fc00:f853:ccd:e793::4\/64 scope global nodad\n       valid_lft forever preferred_lft forever\n    inet6 fe80::42:acff:fe12:4\/64 scope link\n       valid_lft forever preferred_lft forever\n11: lxc174c023046ff@if10: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether ae:7a:b9:6b:b3:c1 brd ff:ff:ff:ff:ff:ff link-netns cni-4172177b-df75-61a8-884c-f9d556165df2\n13: lxce84a702bb02c@if12: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000\n    link\/ether 92:65:df:09:dd:28 brd ff:ff:ff:ff:ff:ff link-netns cni-d259ef79-a81c-eba6-1255-6e46b8d1c779\n<\/pre><\/div>\n\n\n<p>On each node there are several interfaces to notice. I&#8217;ll take the first node for example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>eth0@if6<\/strong>: As our Kubernetes cluster is created with Kind, a node is actually a container (and this interface open a corridor to its pair interface on my laptop). If it feels like the movie Inception, well, it is a perfectly correct comparison! This interface is the main door of the building.<\/li>\n\n\n\n<li><strong>lxc4a891387ff1a@if8<\/strong>: This is the pair interface number 8 that is linked to the left container above.<\/li>\n\n\n\n<li><strong>lxc73d2e1d7cf4f@if12<\/strong>: This is the pair interface number 12 that is linked to the right container above.<\/li>\n\n\n\n<li><strong>cilium_host@cilium_net<\/strong>: This is the circle interface in my drawing that allows the routing to\/from other nodes in our cluster.<\/li>\n\n\n\n<li><strong>cilium_vxlan<\/strong>: This is the rectangle in my drawing and is the tunnel interface that will transport you to\/from the other nodes in our cluster.<\/li>\n<\/ul>\n\n\n\n<p>Let&#8217;s now get the complete picture by updating our drawing with these information:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"503\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-8-1024x503.png\" alt=\"Kubernetes networking with Cilium\" class=\"wp-image-31312\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-8-1024x503.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-8-300x148.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-8-768x378.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-8-1536x755.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-8.png 1924w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-wrap-up\">Wrap up<\/h2>\n\n\n\n<p>With this foundation knowledge, you now have all the key elements to understand the communication between pods on the same node or on different nodes. This is what we will look at in my <a href=\"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-linux-routing\/\" target=\"_blank\" rel=\"noreferrer noopener\">next blog post<\/a>. Stay tuned!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you are new or uneasy with networking in Kubernetes, you may benefit from my previous blog for beginner level. In this blog post I will show you in a Kubernetes cluster what a building and its networking components look like. As a reminder, below is the picture I drew in my previous blog to [&hellip;]<\/p>\n","protected":false},"author":109,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1320,1522],"tags":[2700,2667,2634,2668],"type_dbi":[3099,3017,2943,3256],"class_list":["post-30953","post","type-post","status-publish","format-standard","hentry","category-devops","category-kubernetes","tag-cilium","tag-devops-2","tag-kubernetes-2","tag-networking","type-cilium","type-devops","type-kubernetes","type-networking"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Kubernetes Networking by Using Cilium - Intermediate Level - Network Interfaces - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Networking by Using Cilium - Intermediate Level - Network Interfaces\" \/>\n<meta property=\"og:description\" content=\"If you are new or uneasy with networking in Kubernetes, you may benefit from my previous blog for beginner level. In this blog post I will show you in a Kubernetes cluster what a building and its networking components look like. As a reminder, below is the picture I drew in my previous blog to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-20T07:36:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-01T15:34:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png\" \/>\n<meta name=\"author\" content=\"DevOps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DevOps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/\"},\"author\":{\"name\":\"DevOps\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"headline\":\"Kubernetes Networking by Using Cilium &#8211; Intermediate Level &#8211; Network Interfaces\",\"datePublished\":\"2024-02-20T07:36:39+00:00\",\"dateModified\":\"2024-03-01T15:34:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/\"},\"wordCount\":798,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/02\\\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png\",\"keywords\":[\"cilium\",\"devops\",\"kubernetes\",\"networking\"],\"articleSection\":[\"DevOps\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/\",\"name\":\"Kubernetes Networking by Using Cilium - Intermediate Level - Network Interfaces - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/02\\\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png\",\"datePublished\":\"2024-02-20T07:36:39+00:00\",\"dateModified\":\"2024-03-01T15:34:01+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/02\\\/KubernetesNetworking101-KubernetesNetwork-3.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2024\\\/02\\\/KubernetesNetworking101-KubernetesNetwork-3.png\",\"width\":1334,\"height\":764},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Networking by Using Cilium &#8211; Intermediate Level &#8211; Network Interfaces\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/4cd1b5f8a3de93f05a16ab8d7d2b7735\",\"name\":\"DevOps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"caption\":\"DevOps\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/devops\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes Networking by Using Cilium - Intermediate Level - Network Interfaces - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Kubernetes Networking by Using Cilium - Intermediate Level - Network Interfaces","og_description":"If you are new or uneasy with networking in Kubernetes, you may benefit from my previous blog for beginner level. In this blog post I will show you in a Kubernetes cluster what a building and its networking components look like. As a reminder, below is the picture I drew in my previous blog to [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/","og_site_name":"dbi Blog","article_published_time":"2024-02-20T07:36:39+00:00","article_modified_time":"2024-03-01T15:34:01+00:00","og_image":[{"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png","type":"","width":"","height":""}],"author":"DevOps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DevOps","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/"},"author":{"name":"DevOps","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"headline":"Kubernetes Networking by Using Cilium &#8211; Intermediate Level &#8211; Network Interfaces","datePublished":"2024-02-20T07:36:39+00:00","dateModified":"2024-03-01T15:34:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/"},"wordCount":798,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png","keywords":["cilium","devops","kubernetes","networking"],"articleSection":["DevOps","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/","url":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/","name":"Kubernetes Networking by Using Cilium - Intermediate Level - Network Interfaces - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3-1024x586.png","datePublished":"2024-02-20T07:36:39+00:00","dateModified":"2024-03-01T15:34:01+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/02\/KubernetesNetworking101-KubernetesNetwork-3.png","width":1334,"height":764},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-networking-by-using-cilium-intermediate-level-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Networking by Using Cilium &#8211; Intermediate Level &#8211; Network Interfaces"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735","name":"DevOps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","caption":"DevOps"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/devops\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/30953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=30953"}],"version-history":[{"count":24,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/30953\/revisions"}],"predecessor-version":[{"id":31590,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/30953\/revisions\/31590"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=30953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=30953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=30953"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=30953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}