Nginx请求Kubernetes中的两个或更多节点

时间:2019-02-09 15:20:34

标签: kubernetes

我试图了解kubernetes背后的一些概念,所以我有以下几点:

  1. 具有2个节点的kubernetes集群
  2. 具有2个副本的nginx部署,所以我有2个POD。
  3. 一项在端口32134上公开nginx的服务,因此我可以使用以下命令访问每个节点:

    http://node01:32134http://node02:32134

所以,让我怀疑一下:

  1. 执行kubectl describe pod nginx-001后,此pod在 node01 下运行。对pod nginx-002执行相同的命令,我也将此pod运行在 node01 下。因此,如果我的Pod仅在一个节点下运行,如何在两个URL(node01和node02)中获取HTTP 200? Node02不应该响应,因为没有任何Nginx在运行,对吗?

  2. 看着kubctl logs -f nginx-001,我得到了所有访问请求日志。奇怪的是:不管我打http://node01还是http://node02,我总是在nginx-001 POD中获取日志,另一个Pod(nginx-002)永远不会在日志中获取请求。好像 ks8 总是将所有请求都重定向到nginx-001,而忘记了另一个pod。

重要提示 我正在使用Digital Ocean Kubernetes服务

1 个答案:

答案 0 :(得分:6)

1)那是kube-proxy介入的地方。kube-proxy负责将您的请求路由到Pod,而与Pod部署在何处无关。您可能有一个50节点群集。您可能部署了10个副本nginx,所有副本都仅部署在1个节点上,将请求路由到服务将是kube-proxy的工作。

2)这基本上取决于您遇到的负载。您可能是唯一使用nginx服务的人。因此,它将持续发送请求到一个pod。 Kubernetes服务可在一组服务器Pod之间实现负载平衡,从而允许客户端Pod独立且持久地运行。