2017-06-18 111 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重試。