K8S 面试题:service 到底能不能 ping 通

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

实验环境搭建

使用 kind (k8s.io) 可以很方便的在本地搭建实验环境,修改配置即可创建 kubeProxyMode 为 iptables 或 ipvs。

实验涉及的 config 和 yaml 可以在我的 github repo 找到: win5do/k8s-svc-test (github.com)

网络调试工具可以通过创建 netshoot 容器 attach 到目标 network namespace:nicolaka/netshoot: a Docker + Kubernetes network trouble-shooting swiss-army container (github.com)

ClusterIP/NodePort

这类 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 通的。

Loadbalancer

Loadbalancer 类型 svc 也要看云厂商的具体实现。

  • 普通模式:基于 NodePort,LB -> node:nodePort -> pod。ping 的结果跟 NodePort 一致。
  • 直连模式:LB 和 pod 处于同一个 VPC 子网,LB -> pod。ping 的结果跟 Headless 一致。

ExternalName

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

Reference:


无风的内存空间
编程相关,随手记下
649 声望
58 粉丝
0 条评论
推荐阅读
[ k8s-operator 系列 ] 自动生成 webhook 证书并在过期时自动刷新
下面要介绍的是另一种方式:github.com/open-policy-agent/cert-controller,最初是在 open-policy-agent/gatekeeper 中看到这种用法,感觉非常 Geek。

无风1阅读 3.9k

Kubernetes v1.26 新特性一览
我每期的 「k8s生态周报」都有一个叫上游进展的部分,所以很多值得关注的内容在之前的文章中已经发过了。这篇中我会再额外介绍一些之前未涵盖的,和之前介绍过的值得关注的内容。

张晋涛2阅读 648评论 1

封面图
深入剖析容器网络和 iptables
Docker 能为我们提供很强大和灵活的网络能力,很大程度上要归功于与 iptables 的结合。在使用时,你可能没有太关注到 iptables 的作用,这是因为 Docker 已经帮我们自动完成了相关的配置。

张晋涛3阅读 1.3k

封面图
使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳2阅读 456

Kubernetes 证书管理系列(一)
大家好,我是张晋涛。这是一个系列文章,将会通过七篇内容和大家一起聊聊 Kubernetes 中的证书管理。以下是内容概览:如上所示,在第一篇中,我们将从原理出发,来理解 Kubernetes 中的证书及其相关的作用,然后...

张晋涛2阅读 841

封面图
CodeGalaxy 推出轻量集群,可在云主机上一键搭建 K8s
CodeGalaxy 是 Swoole 官方推出的 ServerLess 平台,底层基于 Docker 和 K8s,帮助开发者更简单方便地管理云上的 Web 应用/服务。CodeGalaxy 是完全免费的,用户不需要付费即可使用。

韩天峰2阅读 434

vivo 云原生容器探索和落地实践
作者:vivo 互联网容器团队- Pan Liangbiao本文根据潘良彪老师在“2022 vivo开发者大会"现场演讲内容整理而成。公众号回复【2022 VDC】获取互联网技术分会场议题相关资料。

vivo互联网技术2阅读 677

649 声望
58 粉丝
宣传栏