Day 32/40
Kubernetes Networking Explained | Container Network Interface (CNI) With @kubesimplify
Video Link
@piyushsachdeva
Git Repository
My Git Repo
In this section, we explain how networking works in Kubernetes
.
The Kubernetes network model specifies:
- Every
pod
gets its own IP address- Containers within a
pod
share thepod
IP address and can communicate freely with each other- Pods can communicate with all other pods in the
cluster
using pod IP addresses (withoutNAT
)- Isolation (restricting what each
pod
can communicate with) is defined using network policies
It is more common to use third-party network implementations that plug into
Kubernetes
using theCNI
(Container Network Interface) API.There are lots of different kinds of CNI plugins, but the two main ones are:
- Network plugins, which are responsible for connecting pods to the network
IPAM
(IP Address Management) plugins, which are responsible for allocating pod IP addresses sourceContainer Network Interface (CNI) is an open standard for configuring network interfaces in Linux containers. Kubernetes uses CNI plugins to manage network connectivity for pods. Here are some popular CNI plugins commonly used in Kubernetes:
- Flannel
- Calico
- Weave Net
- Cilium
- OVN-Kubernetes
- Multus source
Network kinds
inter node
inter pod
root@sinaops:~# k3s kubectl get node
NAME STATUS ROLES AGE VERSION
sinaops Ready control-plane,master 18m v1.30.3+k3s1
root@sinaops:~# cat << EOF | k3s kubectl apply -f -
> apiVersion: v1
kind: Pod
metadata:
name: shared-namespace
spec:
containers:
- name: p1
image: busybox
command: ['/bin/sh', '-c', 'sleep 10000']
- name: p2
image: nginx
> EOF
pod/shared-namespace created
List of ns
root@sinaops:~# ip netns list
cni-d72a06a2-78f2-fe18-e0ee-f98212cc6b4b (id: 12)
cni-04391c49-b5ee-6ee7-448a-823223533bf0 (id: 11)
cni-3386ac0b-77c3-d56e-944e-bae4b093afa3 (id: 16)
cni-52ef2fc1-9ee9-9c79-a188-11312df766b0 (id: 15)
cni-8f1d6b47-6e90-d771-d30e-4cafc83f68cc (id: 14)
cni-993c14ba-79e4-c943-f067-f480e1562bde (id: 4)
cni-afb0acf9-a2b5-b80e-b6fb-d8769861e8f9 (id: 13)
root@sinaops:~# ls -lt /var/run/netns/
total 0
-r--r--r-- 1 root root 0 Aug 13 18:30 cni-d72a06a2-78f2-fe18-e0ee-f98212cc6b4b
-r--r--r-- 1 root root 0 Aug 13 18:13 cni-04391c49-b5ee-6ee7-448a-823223533bf0
-r--r--r-- 1 root root 0 Aug 13 18:11 cni-3386ac0b-77c3-d56e-944e-bae4b093afa3
-r--r--r-- 1 root root 0 Aug 13 18:11 cni-52ef2fc1-9ee9-9c79-a188-11312df766b0
-r--r--r-- 1 root root 0 Aug 13 18:11 cni-8f1d6b47-6e90-d771-d30e-4cafc83f68cc
-r--r--r-- 1 root root 0 Aug 13 18:11 cni-993c14ba-79e4-c943-f067-f480e1562bde
-r--r--r-- 1 root root 0 Aug 13 18:11 cni-afb0acf9-a2b5-b80e-b6fb-d8769861e8f9
root@sinaops:~# lsns | grep nginx
4026533557 mnt 5 2112020 root nginx: master process nginx -g daemon off;
4026533558 pid 5 2112020 root nginx: master process nginx -g daemon off;
4026533559 cgroup 5 2112020 root nginx: master process nginx -g daemon off;
root@sinaops:~# lsns -p 2112020
NS TYPE NPROCS PID USER COMMAND
4026531834 time 236 1 root /lib/systemd/systemd --system --deserialize 56
4026531837 user 236 1 root /lib/systemd/systemd --system --deserialize 56
4026533190 net 7 2111902 65535 /pause
4026533551 uts 7 2111902 65535 /pause
4026533552 ipc 7 2111902 65535 /pause
4026533557 mnt 5 2112020 root nginx: master process nginx -g daemon off;
4026533558 pid 5 2112020 root nginx: master process nginx -g daemon off;
4026533559 cgroup 5 2112020 root nginx: master process nginx -g daemon off;
root@sinaops:~# ip netns exec cni-d72a06a2-78f2-fe18-e0ee-f98212cc6b4b ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if1192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP mode DEFAULT group default
link/ether 3e:9b:21:45:1f:50 brd ff:ff:ff:ff:ff:ff link-netnsid 0
root@sinaops:~# ip link
...
1192: vethbb792801@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP mode DEFAULT group default
link/ether 2a:de:ce:a7:9e:32 brd ff:ff:ff:ff:ff:ff link-netns cni-d72a06a2-78f2-fe18-e0ee-f98212cc6b4b
root@sinaops:~# ip addr
...
1192: vethbb792801@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
link/ether 2a:de:ce:a7:9e:32 brd ff:ff:ff:ff:ff:ff link-netns cni-d72a06a2-78f2-fe18-e0ee-f98212cc6b4b
inet6 fe80::28de:ceff:fea7:9e32/64 scope link
valid_lft forever preferred_lft forever
root@sinaops:~# ethtool -S vethbb792801
NIC statistics:
peer_ifindex: 2
rx_queue_0_xdp_packets: 0
rx_queue_0_xdp_bytes: 0
rx_queue_0_drops: 0
rx_queue_0_xdp_redirect: 0
rx_queue_0_xdp_drops: 0
rx_queue_0_xdp_tx: 0
rx_queue_0_xdp_tx_errors: 0
tx_queue_0_xdp_xmit: 0
tx_queue_0_xdp_xmit_errors: 0
Top comments (0)