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
添加到任何节点应该可以解决您的问题。
我在我的 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
添加到任何节点应该可以解决您的问题。