我试图了解Kubernetes的网络连接,并在GKE网络文档中遇到了以下代码片段... GKE - Networking。这说...
openssl ts -verify -in image.tsr -data image.png -CAfile cacert.pem
对此我有两个问题...
有人可以澄清一下吗?
谢谢。
答案 0 :(得分:3)
请为您的问题找到答案:
1)这个节点中的kube-proxy是否将流量发送到服务中的其中一个pod?
是,kube-proxy
会将流量路由到正确的广告连播。集群中的每个节点都将具有kube-proxy,并且每个kube-proxy将编写iptable
规则以在使用serviceIP时将流量重定向到Pod 。
2)让我们举个例子:
我们有4个节点集群和两个带有2个副本的应用程序。
node1 -> application1_pod1
node2 -> application1_pod2
node3 -> application2_pod1
node4 -> application2_pod2
(all 4 pods are running in different node)
现在application1想使用application2的服务名称与application2对话。
1. application1_pod1 may talk to application2_pod1
1.1 (once this is done, node1 iptables will route next traffic to application2_pod2)
2. application1_pod2 may talk to application2_pod1 (as the iptables of node2 is not aware of previous traffic in node1)
2.1 (once this is done, node2 iptables will route next traffic to application2_pod2)
3. application1_pod1 will talk to application2_pod2 (because of 1.1)
4. application1_pod2 will talk to application2_pod2 (because of 2.1)
因此,在第2步结束时,到application2_pod1的流量为100%,到application2_pod2的流量为0%。 在第4步结束时,到application2_pod2的流量是50%,到application2_pod2的流量是50%。
因此,严格来说,这不是循环,而是最终循环。
如何将服务IP转换为podIP?
ServiceIP是虚拟IP 。 PodIP基本上是containerIP(与某些运行过程相关联)。 ServiceIP以循环方式指向PodIP。
kube-proxy将在每个节点中编写如下的iptable规则:(假设有3个容器)
When destination is equal to serviceIP, then route to
- PodIP1 with 33% probability,
- PodIP2 with 33% probability and
- PodIP3 with 34% probability
为此,kube-proxy将侦听服务(主要是端点)的创建和来自API服务器的更新。
答案 1 :(得分:2)
检查official doc的这一部分
kube-proxy在3种不同的代理模式下运行:
实现细节有所不同,但通常来说,kube-proxy管理与服务和端点的连接。而且像代理服务器一样,它可以将不属于其节点的流量重定向到正确的流量。
所以...
1)是
2)您引用的文档专门针对GKE。如果您查看k8s的官方文档,则只会发现kube-proxy in iptables mode chooses a backend at random.
,其他模式将使用轮询或用户指定的方法来分发流量。