您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何解決kubernetes中集成istio出現拉取配置中心數據失敗導致服務啟動失敗問題,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
由于在k8s使用了grpc,所以這里我們集成istio來實現http2的自動發現以及負載均衡,但是隨著節點增加,istio之前同步配置時間邊長導致第一次啟動時,服務啟動拉取配置時istio卻還沒初始化好相關配置,而導致第一次啟動失敗,錯誤如下 這里有幾種方案
讓服務啟動時先暫停5s,再加載配置信息
加載配置失敗一直重試知道成功
修改istio與業務pod啟動時間間隔
修改dockerfile 檢查istio是否啟動,啟動成功后再啟動業務pod
經過評估,方案1需要代碼侵入,還是無法完全解決問題, 方案2 也是需要修改業務代碼,很多業務都得跟著修改,改動大 方案3 這個在最新版本中的k8s有這個功能,升級有風險 方案4 侵入式小 最后選擇方案四,也參考了相關資料 https://github.com/istio/istio/issues/16222
最終需要修改dockerfile來解決,并且將檢查istio健康狀況改成了檢查配置中心是否可用
ENTRYPOINT ["/bin/sh","-c"] CMD ["until curl --head 'http://config-center/info' ; do echo Waiting for Sidecar; sleep 3 ; done ; echo Sidecar available; java -Xmx3200m -Xms3200m -Xmn1600m -jar /app.jar --spring.profiles.active=prod "]
啟動時打印信息如下
這里可以看到第一次檢測也是失敗,知道成功后才開始啟動業務POD
當然也可以將相關命令寫到deploy的yml中。
關于如何解決kubernetes中集成istio出現拉取配置中心數據失敗導致服務啟動失敗問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。