AWS中t2.medium的二三事
t2系列的優點
CPU是按用量算的
平時用剩的可以累積,當然是有上限啦 到需要爆發的時侯把儲起來的credit消費掉(?) 好處是你一些難以估算用量的service你可以放心的跑起來
性價比高
跟同樣配置的c4.large (2vCPU, 4GB Ram) 比起來便宜一半有多($33.97 vs $73.20)
所以我在kubernetes當中用的機器大部份都是t2.medium 雖然大部份的情況下都活得很好 但也有發生意外的時侯 那就是CPU credit不夠
這裡要先說明一下t2系列的機制
t2系列的CPU用量跟其他的不同
AWS會為每個機器每個小時發一定量的CPU Credit
然後扣取你該小時的用量(1 credit = 100% CPU 運行一分鐘)
而不同的instance type可以儲存的credit 也有上限

如果你連續200%CPU跑了好長的一段時間,你的cpu credit很快就會變成0 而這個時侯機器上所有的進程基本上都會卡住不動 等到有CPU credit回復時才跑一點點 簡單來說就是卡死了
所以如果要拿t2系列的機器來做kubernetes的node的話 有幾樣事情是必需的
有效利用t2
CPU credit 監控
Prometheus 可以安裝一個插件去監控AWS的E2 CPU Credit
於CPU credit用量異常或者是不夠的時便發通知(我是利用telegram)
當然你也可以用AWS的cloudwatch直接監控及發通知,原理上是一樣的
合適的資源配置
在設計每個服務時應該先考慮到實時的同量 不然kubernetes在分配資源的時侯很有可能把一堆消耗CPU/內存的大戶放在同一node上
當然在初期很難作出有效的估算,所以我建議初期應該花更多的時間去做監控 密切留意每個服務的資源需求,以便有效作出調整 當發現部份服務的資源需求過高,你就需要作出決定 一是把他的resource request調高,把其他服務擠走 又或者專門配置一些node給他們單獨跑
最後吐槽一下 gcloud沒有類似的brustable instance,差評
參考
- {% post_link grafana-prometheus “利用Prometheus去監控AWS EC2的CPU credit”%}