當其他Pod通過服務連接到服務時(使用ClusterIP)重新啓動Pod時,我們遇到了一個較小的問題。當吊艙出現故障時,會出現一些小的時間間隔(約200毫秒),在這種情況下,某些客戶端請求失敗,因爲他們仍嘗試連接到剛剛斷開的吊艙。這會導致一些「連接被拒絕」錯誤。我們可以通過添加睡眠秒鐘的preStop鉤子來避免它。不幸的是,爲每個部署都做這件事很難。Pod重新啓動時的競爭條件
這可能是一個已知的問題?任何想法如何解決這個一般?
對我來說,它看起來像某種競爭條件
我們使用Kubernetes V1.5.3(又名莢消失之前,它的正確從其端點註銷)。
這是解決辦法的樣子(簡化):
apiVersion: apps/v1beta1
kind: StatefulSet
spec:
template:
spec:
containers:
- name: solr
lifecycle:
preStop:
exec:
command:
- /bin/sleep
- "1"
的example in the docs實際顯示的問題。它開始關閉進程並同時刪除端點。所以它可能已經在端點註冊之前關閉了。
在我們的環境中情況並非如此。我們對沒有任何中間殼程序已經非常挑剔。 – svenwltr