为什么每次更新pod时我的kubernetes服务端点IP都会更改?

时间:2015-09-16 15:18:14

标签: google-compute-engine kubernetes google-kubernetes-engine

我有一个名为staging的kubernetes服务,可以选择所有app=jupiter个广告连播。它在端口1337上公开HTTP服务。这里是描述输出:

$ kubectl describe service staging
Name:           staging
Namespace:      default
Labels:         run=staging
Selector:       app=jupiter
Type:           NodePort
IP:             10.11.255.80
Port:           <unnamed>   1337/TCP
NodePort:       <unnamed>   30421/TCP
Endpoints:      10.8.0.21:1337
Session Affinity:   None
No events.

但是当我在RC上运行kubectl rolling-update时,会删除运行应用程序的1 pod并添加另一个,然后再次运行describe,我得到:

$ kubectl describe service staging
Name:           staging
Namespace:      default
Labels:         run=staging
Selector:       app=jupiter
Type:           NodePort
IP:             10.11.255.80
Port:           <unnamed>   1337/TCP
NodePort:       <unnamed>   30421/TCP
Endpoints:      10.8.0.22:1337
Session Affinity:   None
No events.

除端点IP地址外,一切都是一样的。事实上,每次我这样做都会增加1。这是我期望不改变的一件事,因为服务是对pod的抽象,所以当pod更改时它们不应该改变。

我知道你可以硬编码端点地址,所以这更像是一种好奇心。

此外,任何人都可以告诉我描述输出中的IP字段是什么?

1 个答案:

答案 0 :(得分:3)

IP是您服务的地址,随着时间的推移保持不变。端点是后端地址的集合,服务地址的请求在给定时间点传播。每次包含服务的pod更改时,该集合都会更改,正如您在复制控制器(RC)上执行滚动更新时所注意到的那样。