在 1.17.2 上,每个新节点的 InternalIP 等于 ExternalIP

On 1.17.2, each new node has InternalIP equal to ExternalIP

从本周一开始,在从 Rancher 内部升级到 1.17.2 后,每个新节点(DigitalOcean 液滴,都带有 Ubuntu 18.04.3)将其内部 IP 错误地等于外部 IP,Public一个! 这又是我自周一以来一直遇到的 intra-cluster DNS 解析不足的主要嫌疑犯,因为我刚刚发现无响应的服务位于具有 InternalIP=ExternalIP 的新节点上。

kubectl describe node exacto-devel-mail-01
...
Addresses:
InternalIP:  37.139.20.177
Hostname:    exacto-devel-mail-01

一个 "old" 节点(1.17.2 之前的升级,所以大概我们是 运行 在 1.16.6 上):

kubectl describe node exacto-devel-06
...
Addresses:
InternalIP:  10.129.254.119
Hostname:    exacto-devel-06

我尝试编辑节点,分配正确的 InternalIP 值,但没有任何反应!它只是继续显示错误的地址!

在另一个集群升级到 v1.16.6 后,解决 cluster-DNS 容器 运行 名称失败的问题出现在另一个集群上,这些节点具有损坏的 InternalIP。所以我可以说这个问题影响了 Kubernetes 1.16.6 和 1.17.2,至少在 Rancher-managed k8s 集群中。

为了进一步阐明问题,以下是我的开发环境集群中的当前节点列表:

kubectl get nodes -o wide
NAME                  STATUS   ROLES               AGE    VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
exacto-devel-01       Ready    controlplane,etcd   11d    v1.17.2   37.139.0.68      <none>        RancherOS v1.5.5     4.14.138-rancher    docker://19.3.5
exacto-devel-02       Ready    controlplane,etcd   11d    v1.17.2   37.139.0.231     <none>        RancherOS v1.5.5     4.14.138-rancher    docker://19.3.5
exacto-devel-03       Ready    controlplane,etcd   11d    v1.17.2   37.139.4.139     <none>        RancherOS v1.5.5     4.14.138-rancher    docker://19.3.5
exacto-devel-04       Ready    worker              11d    v1.17.2   10.129.254.158   <none>        Ubuntu 18.04.3 LTS   4.15.0-74-generic   docker://19.3.5
exacto-devel-05       Ready    worker              11d    v1.17.2   10.129.254.200   <none>        Ubuntu 18.04.3 LTS   4.15.0-74-generic   docker://19.3.5
exacto-devel-06       Ready    worker              10d    v1.17.2   10.129.254.119   <none>        Ubuntu 18.04.3 LTS   4.15.0-74-generic   docker://19.3.2
exacto-devel-elk-01   Ready    worker              25h    v1.17.2   185.14.186.204   <none>        Ubuntu 18.04.4 LTS   4.15.0-76-generic   docker://19.3.5
exacto-devel-elk-02   Ready    worker              7h8m   v1.17.2   198.211.118.87   <none>        Ubuntu 18.04.4 LTS   4.15.0-76-generic   docker://19.3.5

如您所见,01,02,03 和 elk-01,elk-02 都受此问题影响:在 "InternalIP" 列 header 下有一个清晰可辨的 Public 知识产权! 虽然它在 01,02 和 03 节点上似乎无关紧要,因为它们具有 etcd 和控制平面角色,但它实际上阻止了集群扩展以添加新功能(本例中为 ELK),因为部署了任何工作负载在这些新节点上将面临 intra-cluster DNS 解析问题。

请指教下一步该怎么做! 谢谢

当您从 rancher 创建自定义集群时,您可以为 rancher agent 指定 IP 地址,代理将使用该 IP 注册节点。