k8s网卡切换(k8s网络神器之dummy网卡)
k8s网卡切换(k8s网络神器之dummy网卡)
在我们日常工作中,是否有这种需求,在断网的情况下,假装网络可以通,仍然可以通过类似192.168.1.1 这样的IP 访问服务 。除了我们经常使用本例换回口127.0.0.1以外,今天介绍一个神器:dummy网卡。
ip link add nodelocaldns type dummy
ip addr add 169.254.20.10 dev nodelocaldns
ip addr add 10.96.0.10 dev nodelocaldns
创建一个nodelocaldns的网卡后,就可以本地ping通了
# ip a
1: lo: <LOOPBACK UP LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
5: nodelocaldns: <BROADCAST NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 4a:d6:09:1a:97:6a brd ff:ff:ff:ff:ff:ff
inet 169.254.20.10/32 scope global nodelocaldns
valid_lft forever preferred_lft forever
inet 10.96.0.10/32 scope global nodelocaldns
valid_lft forever preferred_lft forever
# ping 10.96.0.10
PING 10.96.0.10 (10.96.0.10) 56(84) bytes of data.
64 bytes from 10.96.0.10: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 10.96.0.10: icmp_seq=2 ttl=64 time=0.050 ms
细心的同学可能发现了这个网卡的名称是 nodelocaldns ,没错就是k8s里面的local dns的网卡,k8s的local dns正是使用了这种分布式的IP的能力实现的,每台机器上面都可以有这样一个本地的网卡。
除了nodelocaldns 使用了dummy网卡以外,如果kube-proxy通过ipvs实现的话,也需要创建一个dummy的网卡kube-ipvs0绑定服务IP(clusterIP),当我们访问这个服务IP的时候,流量便可以进入ipvs转发。因为有了这个dummy网卡,服务IP也可以ping通了,只不过这个ping其实是本地返回,意义不大。