另一个很好的起点是这种Vagrant设置,尤其是。如果您的主机操作系统是Windows。明显的优势是
- 快速,轻松的设置
- 易于销毁/重新创建机器
- 隐式资源限制
- 通过创建多个节点来测试水平缩放的能力
缺点-您需要大量RAM,而VirtualBox是VirtualBox ...更好或更坏。
优点/缺点混合在一起是通过NFS映射文件。在我们的设置中,我们创建了两组RC定义-一组仅下载应用程序服务器的docker映像;另一条带有7条额外的行,用于从HostOS-> Vagrant-> VirtualBox-> CoreOS-> Kubernetes pod设置文件映射;覆盖Docker映像中的源代码。
缺点是NFS文件缓存-有了它,就成问题了;没有它,就成问题了。即使设置mount_options: 'nolock,vers=3,udp,noac'
也不能完全摆脱缓存问题,但是大多数情况下它都能工作。在容器中运行的某些Gulp任务在主机OS上花费8秒时可能需要5分钟。似乎是一个很好的妥协mount_options: 'nolock,vers=3,udp,ac,hard,noatime,nodiratime,acregmin=2,acdirmin=5,acregmax=15,acdirmax=15'
。
至于自动代码重新加载,这是特定于语言的,但是我们对Django的Python开发服务器和Node.js的Nodemon感到满意。对于前端项目,您当然可以使用gulp + browserSync + watch之类的东西来做很多事情,但是对于许多开发人员而言,从Apache提供服务并不难,只需进行传统的硬刷新即可。
我们为Kubernetes保留了4套yaml文件。开发人员,“开发人员”,阶段,产品。两者之间的区别是
- env变量显式设置环境(dev / stage / prod)
- 副本数
- devstable,stage,prod使用docker映像
- 开发人员使用docker映像,并将NFS文件夹及其源代码映射到它们。
创建很多bash别名和自动完成功能非常有用-我可以键入rec users
,它将完成kubectl delete -f ... ; kubectl create -f ...
。如果我希望整个设置开始,我键入recfo
,它将重新创建一打服务,提取最新的docker映像,从Staging env导入最新的数据库转储,并清理旧的Docker文件以节省空间。