我有一个名为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
字段是什么?
答案 0 :(得分:3)
IP是您服务的地址,随着时间的推移保持不变。端点是后端地址的集合,服务地址的请求在给定时间点传播。每次包含服务的pod更改时,该集合都会更改,正如您在复制控制器(RC)上执行滚动更新时所注意到的那样。