【问题标题】:worker added but not present in kubectl get nodes工人添加但不存在于 kubectl 获取节点
【发布时间】:2016-01-21 16:34:04
【问题描述】:

我正在建立一个 2 节点 Kubernetes 系统,遵循 Docker 多节点 instructions

我的问题是kubectl get nodes 只显示主节点,而不是工作节点。

  • 设置似乎已经成功,所有预期的容器都在运行(据我所知)
  • 我已确认网络可以通过 flannel 工作。
  • 工作节点的子网出现在主节点的子网列表中。

所以一切看起来都不错,除了节点没有出现。

我的问题:

  1. 我认为现在应该从“获取节点”中看到工作节点是否正确?

  2. 用于设置的 MASTER_IP 是主节点的公共 IP 地址还是 docker IP 是否重要? (我都试过了..)

  3. 从哪里开始调试?

感激地接受任何指针......

版本:

  • Ubuntu Trusty 14.04 LTS 在 master 和 worker 上
  • Kubernetes v1.1.4
  • hyperkube:v1.0.3

【问题讨论】:

  • 很难从您提供的信息中看出:我们需要查看您的配置。工作节点很可能由于某种原因没有与主节点通信,并且可能是很多事情(比如错误的证书、工作节点 kubelet 中主 IP 的错误配置......)
  • 感谢@MrE 的回复;你能告诉我你需要看什么配置吗?我可以告诉工作节点可以通过在每个节点上启动一个 ubuntu 容器并 ping 另一个节点来与主节点通信,因此我可以看到 flannel 网络已启动。
  • 我认为相关信息在 kube-config 和您传递给每个节点上 kubelet 的参数中(无论是在服务还是命令行中)
  • # kubectl config view 在两者上都显示了一个空配置,这与我在 Google Cloud 上工作的 kubernetes 设置绝对不同。 kubelet 由 kubernetes repo 中的 master.sh 和 worker.sh 启动。我已经在pastebin.com/9Mntiwen 发布了这些版本是 1.0.3,我已经尝试了 worker.sh 中 MASTER_IP 的公共 IP 和 docker IP
  • 我正在查看 minion 上的 kubectl 日志,看起来似乎与 IPv6 地址有关...

标签: kubernetes


【解决方案1】:

回答我自己的#cloudplatform 问题...

原来是 Kubernetes v1.1.4 中 worker.sh 的问题。

kubectl 使用“--hostname-override=$(hostname -i)”调用

在这台机器上,返回 IPv6 地址。

K8s 代码试图将其转换为 DNS 名称,但失败了。

所以查看 kubectl 容器的日志文件,我们会看到:

I0122 15:57:33.891577    1786 kubelet.go:1942] Recording NodeReady event message for node 2001:41c9:1:41f::131
I0122 15:57:33.891599    1786 kubelet.go:790] Attempting to register node 2001:41c9:1:41f::131
I0122 15:57:33.894076    1786 kubelet.go:793] Unable to register 2001:41c9:1:41f::131 with the apiserver: Node "2001:41c9:1:41f::131" is invalid: [metadata.name: invalid value '2001:41c9:1:41f::131': must be a DNS subdomain (at most 253 characters, matching regex [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*): e.g. "example.com", metadata.labels: invalid value '2001:41c9:1:41f::131': must have at most 63 characters, matching regex (([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?: e.g. "MyValue" or ""]

这就是我的问题。把它拿出来,一切都很好。

所以回答我的 3 个问题:

  1. 是的,工作节点应该立即在“获取节点”中可见。
  2. 我认为让它工作并不重要;出于安全原因,这可能很重要。
  3. 检查基本网络是否正确且容器正在运行后的第一步:查看新节点的 kubectl 容器的日志文件。

更新:我写了这篇博文来解释我是如何工作的 http://blog.willmer.org/2016/11/kubernetes-bytemark/

【讨论】:

  • 我遇到了同样的问题。你能告诉我如何获取日志以及worker.sh的位置吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多