《kubernetes-1.8.0》14-examples-javaweb-tomcat-sidecar
《kubernetes 1.8.0 测试环境安装部署》
时间:2017-12-04
一、tomcat在k8s中的几种部署方式:
一般而言tomcat在k8s中部署应用有以下两种方式:
- 加载本地宿主机上war包的方式:加载tomcat镜像,并在yaml文件中定义
hostPath
的volume
,在镜像启动时,预先将本地宿主机上的war包加载到容器中的文件系统,后续启动tomcat进程加载该war包。这种方式的几个问题很突出,首先要保证群集中有可能启动该tomcat容器的node节点上都必须存在war包,否则镜像启动加载将找不到对应的war包(可以采用共享文件系统glusterfs,nfs等等,结合上亲和性部署降低负责性),其次更新复杂,一致性维护困难,需要维护多个node上的war包,不能随镜像自动升级。 - 将war包做到tomcat镜像中去:找一个tomcat版本,写dockerfile,将war包打包进去。但这样做就将中间件和应用打包在一起,导致镜像过大,无法拆分,后续升级不方便的因素。
二、tomcat sidecar mode:
kubernetes官网的example给了一个解决方案叫做 sidecar mode
:
简单说明一下:
这种模式将中间件版本和war包分离,放在一个pod里的两个不同容器,充分利用pod内container之间的volume及网络的共享实现war包的加载:
As you can see, user can create a sample:v2 container as sidecar to “provide” war file to Tomcat by copying it to the shared emptyDir volume. And Pod will make sure the two containers compose an “atomic” scheduling unit, which is perfect for this case. Thus, your application version management will be totally separated from web server management.
如你所见,用户能够创建一个sample:v2的容器,作为sidecar通过拷贝war包到共享的emptyDir volume方式提供war包给tomcat。pod将确定两个容器分别为原子级别的调度单元,很适合这种场景。因此,你的应用版本管理与web