2017/09/26 更新
- 性能问题查明,是文件系统导致,与服务无关。测试环境上用的是NFS。
2017/09/18 更新
kubernetes 1.7.4版本上,go服务并发150,升级到1.7.5后,并发400+。
- 系统
- 尝试过centos和ubuntu,由于网上大部分参考都是centos,最终还是选择了centos 7.3。
- 安装工具
- 尝试过ubuntu下的conjure-up, kubespray,kubeadm,最终选择了kubeadm;
- 无论什么工具,都严重依赖翻墙下镜像。可以通过docker hub或者其他方式转存镜像。但,直接翻墙最简洁。
- 工具越智能,出错越难排查。conjure-up和kubespray很方便,但是出错的时候就麻烦了。
- kubeadm简洁,官方支持,出错也能清楚知道错在哪一步。另外github上有非官方的HA方案,其他工具则只支持单master。
- 网络组件选择
- 尝试过calico, flannel(host-gw, vxlan),weave;
- calico网络下,服务的端口访问有问题,如dashboard开了30001端口,pod部署在node1上,则:
- 通过node1的IP+30001,本地和外网都能访问。
- 通过其他node或者master+30001,本地能访问,外网不能。
-
docker版本
- 官方建议是到1.12版本为止,而我尝试的是17.0.6,结果出现问题,需要另外配置防火墙。
-
对外端口
- 尝试过NodePort,性能不好放弃;
- 尝试过ingree+ nginx,发现后端pod变化时,要相当长的时间在ingress上生效。一段时间内会出现服务访问不到。
- 尝试过 ingress+ nginx+ keeapalived+ vip, 考虑到上云后无法获得vip,故放弃此方案。
- 最终决定使用ingress+traefik,本地建nginx模拟LB。上云后使用ELB。
-
遗留问题
- 通过ingress测试java服务和web,性能很不错。但是测试后台go程序,性能只有原先的1/6。通过ingress请求java服务调用其他java服务的情况下,性能损耗也巨大。