2017/09/26 更新
- 性能問題查明,是文件系統(tǒng)導(dǎo)致,與服務(wù)無關(guān)。測(cè)試環(huán)境上用的是NFS。
2017/09/18 更新
kubernetes 1.7.4版本上,go服務(wù)并發(fā)150,升級(jí)到1.7.5后,并發(fā)400+。
- 系統(tǒng)
- 嘗試過centos和ubuntu,由于網(wǎng)上大部分參考都是centos,最終還是選擇了centos 7.3。
- 安裝工具
- 嘗試過ubuntu下的conjure-up, kubespray,kubeadm,最終選擇了kubeadm;
- 無論什么工具,都嚴(yán)重依賴翻墻下鏡像??梢酝ㄟ^docker hub或者其他方式轉(zhuǎn)存鏡像。但,直接翻墻最簡潔。
- 工具越智能,出錯(cuò)越難排查。conjure-up和kubespray很方便,但是出錯(cuò)的時(shí)候就麻煩了。
- kubeadm簡潔,官方支持,出錯(cuò)也能清楚知道錯(cuò)在哪一步。另外github上有非官方的HA方案,其他工具則只支持單master。
- 網(wǎng)絡(luò)組件選擇
- 嘗試過calico, flannel(host-gw, vxlan),weave;
- calico網(wǎng)絡(luò)下,服務(wù)的端口訪問有問題,如dashboard開了30001端口,pod部署在node1上,則:
- 通過node1的IP+30001,本地和外網(wǎng)都能訪問。
- 通過其他node或者master+30001,本地能訪問,外網(wǎng)不能。
-
docker版本
- 官方建議是到1.12版本為止,而我嘗試的是17.0.6,結(jié)果出現(xiàn)問題,需要另外配置防火墻。
-
對(duì)外端口
- 嘗試過NodePort,性能不好放棄;
- 嘗試過ingree+ nginx,發(fā)現(xiàn)后端pod變化時(shí),要相當(dāng)長的時(shí)間在ingress上生效。一段時(shí)間內(nèi)會(huì)出現(xiàn)服務(wù)訪問不到。
- 嘗試過 ingress+ nginx+ keeapalived+ vip, 考慮到上云后無法獲得vip,故放棄此方案。
- 最終決定使用ingress+traefik,本地建nginx模擬LB。上云后使用ELB。
-
遺留問題
- 通過ingress測(cè)試java服務(wù)和web,性能很不錯(cuò)。但是測(cè)試后臺(tái)go程序,性能只有原先的1/6。通過ingress請(qǐng)求java服務(wù)調(diào)用其他java服務(wù)的情況下,性能損耗也巨大。