【问题标题】:Why does EKS Service NodePort can't switch traffic?为什么EKS Service NodePort不能切换流量?
【发布时间】:2021-07-15 16:30:32
【问题描述】:

我发现无法切换流量的 EKS 服务节点端口的问题。

我在命名空间 qa 中的 EKS 集群 qa-api-cluster 上为游戏服务部署了两个 pod。

此游戏服务使用标签应用程序和版本中的选择器将流量切换到不同的 pod。

例如:

 Pod                        game-service selector
qa-game-blue-xxxx      app=game,version=qa-v0.0.132
qa-game-green-xxxxx    app=game,version=qa-v0.0.133

// game-service in svc
apiVersion: v1
kind: Service
selector:
    app: game
    version: qa-v0.0.133
type: NodePort     // Cannot switch traffic, while LoadBalancer is fine

但是,如果你在game-service中更新了NodePort类型的版本来切换流量,这将需要30多分钟甚至更长的时间才能生效。

最糟糕的是,qa-game-green 和 qa-game-blue 会随机接收流量。

当 game-service 类型为 LoadBalancer 时,立即生效,只有一个 pod 可以接收流量。

为什么 NodePort 类型的服务(游戏服务)不能切换流量,而 LoadBalancer 类型可以?

这是 Kubernetes 的规范还是 AWS 的特定设计?

我应该将其设置为负载均衡器还是可以针对 NodePort 调整任何设置?

【问题讨论】:

    标签: kubernetes amazon-eks


    【解决方案1】:

    经过进一步测试,EKS在服务类型NodePort或Load Balancer切换流量没有问题。

    我发现这个问题的原因是 ALB 和后端服务 pod 之间的空闲连接超时。 (尤其是我的应用程序已经激活了保持活动功能而没有空闲超时)。

    这使得旧 pod 保持与 ALB 的旧连接,直到 ALB 在超时时断开它而没有流量。

    这很难找到,如果遇到相同情况,可能对您有用。

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 2020-07-08
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多