首页 > 解决方案 > Nginx Ingress Controller 在 Google Kubernetes Engine 上找不到节点

问题描述

我在我的 GKE 集群上安装了一个“nginx 入口控制器”。我按照本指南在 GKE 中安装了 nginx 入口控制器。

在为服务和入口资源部署资源时,我意识到入口控制器位于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

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

解决方案:

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

标签: kubernetesgoogle-kubernetes-enginekubernetes-ingressnginx-ingress

解决方案


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

和:

nodeSelector:
    kubernetes.io/os: linux

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

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


推荐阅读