Nginx Ingress Controller 在 Google Kubernetes Engine 上找不到节点

Nginx Ingress Controller can't find nodes on Google Kubernetes Engine

我在我的 GKE 集群上安装了 "nginx ingress controller"。 我按照 this guide 在 GKE 中安装了 nginx ingress controller。

在为服务和入口资源部署资源时,我意识到入口控制器位于 0/1

告诉我的事件:

0/1 nodes are available: 1 node(s) didn't match node selector.

现在我检查了yaml/describe:https://pastebin.com/QG3GKxh1 并发现:

nodeSelector:
    kubernetes.io/os: linux

我认为这看起来不错。由于我只是使用指南的命令来安装控制器,所以我不知道我这边出了什么问题。

解决方案:

提供的答案为我指明了方向。当控制器正在寻找 kubernetes/io: linux 时,我的节点被标记为 beta.kubernetes/io: linux。 重命名控制器中的 nodeSelector 有效。

nodeSelector 用于限制可以调度您的 Pods 的节点。

与:

nodeSelector:
    kubernetes.io/os: linux

你是说 Pods 必须分配给具有标签的节点 kubernetes.io/os: linux。如果您的 none 个节点具有该标签,则 Pod 将永远不会被调度。

从 nginx 入口控制器中删除选择器或将标签 kubernetes.io/os: linux 添加到任何节点应该可以解决您的问题。