Kubernetes - 外部IP与内部IP

4

当我运行以下命令从我的on-prem集群获取信息时:

kubectl cluster-info dump

我会看到每个节点的以下信息:

在主节点上:

"addresses": [
                    {
                        "type": "ExternalIP",
                        "address": "10.10.15.47"
                    },
                    {
                        "type": "InternalIP",
                        "address": "10.10.15.66"
                    },
                    {
                        "type": "InternalIP",
                        "address": "10.10.15.47"
                    },
                    {
                        "type": "InternalIP",
                        "address": "169.254.6.180"
                    },
                    {
                        "type": "Hostname",
                        "address": "k8s-dp-masterecad4834ec"
                    }
                ],

在工作节点1上

"addresses": [
                    {
                        "type": "ExternalIP",
                        "address": "10.10.15.57"
                    },
                    {
                        "type": "InternalIP",
                        "address": "10.10.15.57"
                    },
                    {
                        "type": "Hostname",
                        "address": "k8s-dp-worker5887dd1314"
                    }
                ],


在工作节点2上。
"addresses": [
                    {
                        "type": "ExternalIP",
                        "address": "10.10.15.33"
                    },
                    {
                        "type": "InternalIP",
                        "address": "10.10.15.33"
                    },
                    {
                        "type": "Hostname",
                        "address": "k8s-dp-worker6d2f4b4c53"
                    }
                ],

我的问题是:

1.) 为什么有些节点的外部 IP 和内部 IP 不同,而有些节点则相同? 2.) 对于那些具有不同外部 IP 和内部 IP 的节点来说,它们处于相同的 CIDR 范围内,且都可以从外部访问。这两个 IP 地址有什么内部/外部的特点?(有什么用途?) 3.) 为什么有些节点会有随机的 169.x.x.x IP 地址?

我仍在努力学习 Kubernetes,并且如果有人能帮助我理解,那将非常有帮助。我使用 contiv 作为网络插件。

1个回答

5

您看到的是这些节点状态的一部分:

  • InternalIP:只能从集群内访问的节点IP地址
  • ExternalIP:可以从任何地方访问的节点IP地址
  • Hostname:由内核报告的节点主机名

当一个节点被添加到集群中时,这些字段会被设置,并且它们的确切含义取决于集群配置,并不完全标准化,正如Kubernetes文档所述。

因此,您看到的值是这样的,因为您特定的Kubernetes配置将它们设置为这样。使用另一种配置,您会得到不同的值。

例如,在Amazon EKS上,每个节点都有独特的InternalIP、ExternalIP、InternalDNS、ExternalDNS和Hostname(与InternalIP相同)。Amazon EKS将这些字段设置为云基础架构中节点的相应值。


这个答案完全正确吗?从我的集群内部 IP 来看,它肯定可以从集群外部访问(在局域网上)。 - jmjohnson85
@jmjohnson85 可能是可以的。这些字段是由 Kubernetes API 提供的,用于一个“预期”的目的。然而,具体的 Kubernetes 安装要做什么,即将什么值放入其中,取决于它自己。 - weibeld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接