我的任务是在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"
}
]
}
}
}
流量到达广告连播但不是循环播放,整个流量都转到同一个广告连播。为了让流量进入另一个吊舱,我必须阻止那个获得它...这不是这个目的......
任何想法如何使流量正确负载平衡与粘性?
谢谢!
答案 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。