kubernetes.default.svc如何路由到api服务器?

use*_*389 8 kubernetes

评估集群api,我知道集群中的pod可以使用clusterIp服务kubernetes.default.svc来访问api服务器,但我很好奇它是如何工作的。

集群中的 pod 只会尝试访问 kubernetes.default.svc 中定义的 clusterip,除了 svc 的名称之外,clusterip 与其他集群 ip 没有什么不同。

那么如何将针对特定 clusterip 的 http 请求路由到 api 服务器,它是在创建 kubernetes.default.svc 时由 api 服务器代理配置的吗?

mda*_*iel 6

集群中的 pod 只会尝试访问 kubernetes.default.svc 中定义的 clusterip,除了 svc 的名称之外,clusterip 与其他集群 ip 没有什么不同。

完全正确

那么如何将针对特定 clusterip 的 http 请求路由到 api 服务器,它是在创建 kubernetes.default.svc 时由 api 服务器代理配置的吗?

这种魔力是通过 发生的kube-proxy通常会委托给iptables,尽管我认为最近的 kubernetes 安装它们正在使用 ipvs 来提供更多的控制......好吧,几乎所有事情。它kube-proxy从 API 接收指令,通知它任何更改,并将其应用于各个节点以保持世界同步。

如果您有权访问节点,则可以运行sudo iptables -t nat -L -n并查看KUBE-SERVICE-*定义的所有规则(通常甚至带有有用的注释),并查看它们如何从ClusterIP下到上映射到与选择器匹配的 Pod 的 IP。这Service