我有一个在内存数据库中使用的应用程序。我使用带有3个副本的Pod创建了statefulset。用PVC来存储数据库相关文件。
我使用了Loabalancer来公开状态集。
因此,当流量每次转发到不同的Pod时都达到负载均衡器时。
无论如何,我是否可以根据某些条件(例如,如果客户端IP为X转到Pod Y)来控制Pod的负载平衡?
答案 0 :(得分:3)
事实上,您具有领导者/跟随者拓扑,将流量定向到所述nome(主节点)的要求存在缺陷,其原因如下:
无论如何,如果这是您想要的,也许您想阅读有关here的gateways in istio
答案 1 :(得分:0)
您可以使用K8s入口资源来解决这种情况。我认为您要尝试的是基于主机的路由。 使用标签将您的广告连播置于其他服务的后面。在您的情况下,服务1落后1-100,服务2落后100-200,依此类推。然后创建一个入口资源,以根据主机或路径将传入流量重定向到其他服务,无论您需要什么。您可能必须使用像Nginx这样的代理才能在公共云平台上正常工作。 YAML清单将是这样的:
function weightedIntegerValues(weights, total) {
let flooredValues = [];
const weightSum = weights.reduce((sum, item) => {
return sum + valueFunc(item);
}, 0);
let flooredSum = 0
weights.forEach((weight, i) => {
const weighted = total * weight / weightSum
const floored = Math.floor(weighted);
flooredValues.push({
floored: floored,
diff: weighted - floored,
index: i
});
flooredSum = flooredSum + flooredValues[i].floored;
});
flooredValues = flooredValues.sort((a, b) => b.diff - a.diff);
const difference = total - flooredSum;
for (let i = 0; i < difference; i++) {
flooredValues[i].floored += 1;
}
return flooredValues.sort((a, b) => a.index - b.index).map(v => v.floored);
}