【问题标题】:Why does my kubernetes service endpoint IP change every time I update the pods?为什么每次更新 Pod 时我的 kubernetes 服务端点 IP 都会发生变化?
【发布时间】:2015-09-16 15:18:13
【问题描述】:

我有一个名为 staging 的 kubernetes 服务,它选择所有 app=jupiter pod。它在端口 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 并添加了另一个,然后再次运行描述,我得到:

$ 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 字段是干什么用的?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这很有意义,但我似乎无法通过 IP 访问服务,无论是在端口 1337 还是端口 80。(端点 IP/端口有效。)也许这与它有关是一个 NodePort 服务,但从文档来看,它似乎不是。
    • 在这里发布了这个问题:stackoverflow.com/questions/32618437/…
    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2016-06-12
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多