Kubernetes - 流量始终重定向到同一个 pod



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

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

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"
}
]
}
}
}

流量到达 Pod 但不循环,整个流量都流向同一个 Pod。为了让流量流向另一个吊舱,我必须阻止那个得到它的豆荚......这不是这样做的目的...

知道如何使流量具有粘性的正确负载平衡吗?

谢谢!

来自代理模式的服务文档:IPVS:

在任何这些代理模型中,任何流量都绑定到服务的 IP:端口被代理到没有客户端的适当后端 对 Kubernetes 或服务或 Pod 一无所知。 基于Client-IP可以通过设置来选择会话相关性 service.spec.sessionAffinity to“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。

最新更新