关于iptables:K8S-面试题service-到底能不能-ping-通

34次阅读

共计 582 个字符,预计需要花费 2 分钟才能阅读完成。

面试中被问了这道题,其实是在考查你对 k8s service 的应用和底层原理的了解,答案显然没有那么简略。

ClusterIP/NodePort/Loadbalancer

这三种 svc 都会调配 ClusterIP,这个 IP 地址是 VIP(虚构 IP),是在所有 node 上增加一些 netfilter 规定,次要有 iptables 和 ipvs 两种计划,能不能 ping 通要看具体实现。

  • iptables:clusterIP 只是 iptables 中的规定,只会解决 ip:port 四层数据包,reject 了 icmp。不能 ping 通。
  • IPVS:clusterIP 会绑定到虚构网卡 kube-ipvs0,配置了 route 路由到回环网卡,icmp 包是 lo 网卡回复的。能够 ping 通。

Headless: ClusterIP=None

Headless svc 不会调配 clusterIP,而是返回对应 DNS 的 A 记录,如果 svc 后端有 3 个 pod 则返回 3 个 pod IP。拜访 svc 时会随机抉择一个 IP,所以 headless svc 是能够 ping 通的。

ExternalName

ExternalName 对应 DNS 的 CNAME,如果配置的域名能够 ping 通则 svc 能够 ping 通。

Reference:

  • https://kubernetes.io/zh/docs…
  • https://plantegg.github.io/20…
正文完
 0