Kubernetes - 流量总是重定向到同一个pod

时间:2018-06-07 09:30:07

标签: kubernetes kubernetes-ingress

我的任务是在2天前设置Kubernetes设置,没有该技术的背景。很抱歉,如果我的问题或设置不好。

拓扑非常简单,公共IP ,一个专用 HA代理,配置为将请求转发到包含部署的 Kubernetes服务 2个豆荚。 (需要粘性!)

 Service setup
   {
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "api-admin2",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/services/api-admin2",
    "uid": "98121d0d-698b-11e8-8d90-262e68d4dba8",
    "resourceVersion": "245163",
    "creationTimestamp": "2018-06-06T13:14:50Z",
    "labels": {
      "app": "api-admin"
    },
    "annotations": {
      "service.beta.kubernetes.io/azure-load-balancer-internal": "true"
    }
  },
  "spec": {
    "ports": [
      {
        "protocol": "TCP",
        "port": 80,
        "targetPort": 6543,
        "nodePort": 31302
      }
    ],
    "selector": {
      "app": "api-admin"
    },
    "clusterIP": "10.100.22.118",
    "type": "LoadBalancer",
    "sessionAffinity": "ClientIP",
    "externalTrafficPolicy": "Local",
    "healthCheckNodePort": 32660,
    "sessionAffinityConfig": {
      "clientIP": {
        "timeoutSeconds": 10800
      }
    }
  },
  "status": {
    "loadBalancer": {
      "ingress": [
        {
          "ip": "10.100.21.97"
        }
      ]
    }
  }
}

流量到达广告连播但不是循环播放,整个流量都转到同一个广告连播。为了让流量进入另一个吊舱,我必须阻止那个获得它...这不是这个目的......

任何想法如何使流量正确负载平衡与粘性?

谢谢!

1 个答案:

答案 0 :(得分:1)

来自proxy mode: IPVS的服务文档:

  

在任何这些代理模型中,任何绑定到服务的流量   IP:端口代理到没有客户端的适当后端   了解Kubernetes或服务或Pods的任何信息。基于Client-IP   可以通过设置选择会话亲和力   service.spec.sessionAffinity为“ClientIP”(默认为“None”),   您可以通过设置字段来设置最大会话粘贴时间   service.spec.sessionAffinityConfig.clientIP.timeoutSeconds如果有的话   已设置service.spec.sessionAffinity to “ClientIP”(默认为   “10800”)。

在您的配置中,负责选择pod的会话亲缘关系设置为clientIP,这意味着10800是粘性时间,如果它们来自同一客户端,则所有流量将被转发到同一个pod 3小时。

如果你想指定时间,这也需要改变:

 sessionAffinityConfig:
    clientIP:
      timeoutSeconds: _TIME_

这将允许您更改生病的时间,因此如果您将 TIME 更改为10,则服务将每10秒切换一次pod。