【问题标题】:gke nginx lb health checks / can't get all instances in a "healthy" stategke nginx lb 健康检查/无法使所有实例都处于“健康”状态
【发布时间】:2018-06-05 21:47:14
【问题描述】:

使用 nginx nginx-ingress-controller:0.9.0,下面是谷歌云负载均衡器的永久状态:

基本上,单个健康节点是运行 nginx-ingress-controller pod 的节点。除了在这个屏幕上看起来不太好,一切都非常好。问题是,我想知道为什么磅上会出现如此糟糕的通知

这里是 the service/deployment 使用

我只是对事情的运作方式有些迷茫;希望获得一些关于如何正确做事的经验反馈(我的意思是,在所有节点上获得绿灯),或者仔细检查这是否是不使用“官方”gcloud l7 的缺点

【问题讨论】:

标签: nginx kubernetes google-cloud-platform google-kubernetes-engine


【解决方案1】:

您的Service 正在使用service.beta.kubernetes.io/external-traffic: OnlyLocal 注释。这对其进行了配置,以便到达该服务的 NodePort 的流量永远不会在另一个节点上到达 Pod。由于您的 Deployment 只有 1 个副本,因此唯一会接收流量的节点是 1 个 Pod 正在运行的节点。

如果您将 Deployment 扩展到 2 个副本,则 2 个节点将是健康的,等等。

使用该注释是推荐配置,这样您就不会引入额外的网络跃点。

【讨论】:

  • 好的,我得到了预期的结果。但是我仍然很困惑,因为我看不到事情是如何发生的; nginx 只是代理到另一个服务,所以你的意思是这部分只会发生在特定节点上?我不明白事物是如何与特定节点相关联的,因为部署/pod 所在的任何地方都会到达它——如果部署/pod 有一个副本,它不一定会在部署/pod 所在的节点上已先收到流量
  • Nginx 是先获取流量,然后根据Ingress 的配置将流量转发到任意 pod 中的任意节点。
猜你喜欢
  • 2022-06-13
  • 2016-12-27
  • 2014-10-02
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 2021-09-13
  • 2019-11-03
  • 1970-01-01
相关资源
最近更新 更多