【问题标题】:What is Kubernetes egress call flow?什么是 Kubernetes 出口调用流程?
【发布时间】:2021-07-05 13:43:29
【问题描述】:

我是 Kubernetes 的新手。试图了解当我尝试从 kubernetes pod 内部访问 google.com 时会发生什么。
请求会直接到达 google.com(当然不是),还是在调用超出 pod 之前首先在 /etc/hosts.allow 文件中进行一些 dns 查找?出口呼叫的流程或过程是什么?
PS:我已经运行了默认的 coredns pod。

【问题讨论】:

    标签: kubernetes kubernetes-pod hosts hosts-file


    【解决方案1】:

    我认为这个问题可以分为 2 个不同的主题:

    • DNS 分辨率。
    • Pod 尝试联系外部资源时的网络。

    回答这两个问题可能会很长,但我会尝试为您提供一个基线,并添加更多更深入的文档。


    DNS 在集群内部/外部发生的分辨率:

    正如您已经说过的,您使用的是CoreDNS。它将在您的设置中负责您的DNS 分辨率。您的Pods 将在查找本地未包含的域时查询它(例如/etc/hosts)。收到回复后,他们会联系外部来源(稍后会详细介绍)。

    附注!

    DNS 分辨率(本地、查询)取决于您使用的工具。 curl 将检查它,但例如 nslookup 将直接查询 DNS 服务器。

    您的CoreDNS 很可能在您的集群中的Services 之一下可用:

    • $ kubectl get service --all-namespaces
    NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
    default       kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  79m
    kube-system   kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   79m
    

    我想你可以在官方文档中找到很多有用的信息:

    您也可以按照本指南获得更多实践经验:


    尝试访问外部资源时的 Pod 网络:

    每个 Kubernetes 解决方案在处理网络的方式上可能有所不同。请参阅您的解决方案的文档以获取更多详细信息。它的主要前提是Pod 不会“直接”与外部源通信。您可以在下面找到有关其背后原因的更多信息:

    NAT 传出

    网络地址转换 (NAT) 是当数据包通过执行 NAT 的设备时,将数据包中的 IP 地址映射到不同 IP 地址的过程。根据使用情况,NAT 可以应用于源 IP 地址或目标 IP 地址,或同时应用于这两个地址。

    在 Kubernetes egress 的上下文中,如果 pod 的 IP 地址在集群外部不可路由(例如,如果 pod 网络是覆盖网络),则 NAT 用于允许 pod 连接到集群外部的服务.

    例如,如果覆盖网络中的 pod 尝试连接到集群外部的 IP 地址,则托管该 pod 的节点使用 SNAT(源网络地址转换)来映射不可路由的源 IP 地址在转发数据包之前将数据包发送到节点的 IP 地址。然后该节点将来自相反方向的响应数据包映射回原始 pod IP 地址,因此数据包在两个方向上端到端流动,而 pod 或外部服务都不会意识到映射正在发生。

    -- Docs.projectcalico.org: About: About Kubernetes Egress

    简而言之,假设没有其他因素(例如您的云提供商使用的其他 NAT),您的 Pod 将尝试使用 Node IP 联系外部资源(使用 Source NAT)。

    您可以通过以下方式找到有关数据包寿命的更深入解释(某些方面是GKE 特定的):


    其他资源

    【讨论】:

      猜你喜欢
      • 2018-12-11
      • 2021-09-26
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      相关资源
      最近更新 更多