2017-06-18 46 views
1

我有一个图像运行node.js应用程序。 在这个应用程序中我有杀死进程的方法/ kill(“process.exit();”)。Kubernetes。如何避免kubernetes针对其他副本重试请求?

我有一个部署有三个副本运行上面的图像。 我通过类型为NodePort的服务公开部署。

当我针对一个副本调用/ kill时,它存在并且请求失败,那么kubernetes会针对其他副本重试请求,并且所有这些副本都将退出。

这是我的服务:

apiVersion: v1 
kind: Service 
metadata: 
    name: hellokube-service 
    labels: 
    app: hellokube 
spec: 
    type: NodePort 
    ports: 
    - port: 8080 
    targetPort: 8080 
    nodePort: 31111 
    selector: 
    app: hellokube 

是否有可能避免这种重试?

+0

我怀疑这会帮助你在这里;但你可以尝试SessionAffinity设置,看看它是否有帮助? –

+0

感谢您的评论,“问题”是浏览器。 – Jxadro

回答

1

这不是kubernetes谁正在重试。这是浏览器。

我的node.js方法实现:

app.get("/kill", function(req, res, next){ 
    logger.info("Somebody kill me."); 
    process.exit(); 
}); 

这是一个get和返回什么。浏览器检测到意外松动的幂等操作连接并重试该操作。 https://mnot.github.io/I-D/httpbis-retry/

如果我返回一些东西,或者我将操作更改为POST操作,则不会发生。

我对此浏览器行为不了解。

如果您使用curl而不是浏览器调用原始操作,则不会重试。 SOAPUI重试。