關鍵字: KIAM, DNS, AWS IAM, latency
影響: 存取服務會花上高達十倍的延遲時間
這篇文章準確的說,問題其實跟 Kubernetes 本身關係不大,反而是遷移 Kubernetes 到系統中常見的溝通問題。作者的標題是真真實實來自 Dev Team 的回饋,當應用程式搬移到 kubernetes 後得到的效果不如預期,也許最後不是 kubernetes 的問題,但是 SRE/DevOps 還是得必須針對這些質疑去探討,找出最後真正的原因。
作者團隊當初要將一個微服務從 EC2 上給整合到 Kubernetes內,卻發現存取該服務的延遲性相對於直接部署到 EC2 上大幅度上升十倍。根據團隊的調查,EC2 的應用程式只需要 20ms 左右回覆請求,而 kubernetes 版本則需要 200ms 左右。
最後來來回回除錯找到問題根源,主要是 AWS Jave SDK 裏面的用法於不同的情境下會有不同的效果。其於 Kubernetes 下會發生每個 request 都強迫去刷新當前的 certificate 資訊,因此每個 request 都還會額外發送一個新的 request 去取得 certificate。
基本上整個問題都跟 Kubernetes 的架構無關,單純是 AWS 架構的用法,如果你有使用 KIAM 相關的服務,同時也有使用 AWS Java SDK,可以參考本篇的問題
https://srvaroa.github.io/kubernetes/migration/latency/dns/java/aws/microservices/2019/10/22/kubernetes-added-a-0-to-my-latency.html
Search