年底了,腾讯云突然给CLB负载均衡涨价了,要知道一个问题,当你的服务全部容器化之后,暴露出的服务最好走的是ingress,而ingress是和负载均衡的功能绑定的,使用量最小单位是一个k8s命名空间使用一个(曾经腾讯的ingress是只能绑定一个证书,现在可以绑多个了)。这样带来的结果是,你的费用会突然大幅度的提高,尤其当你划分某些辅助用的业务在一个独立的namespace里方便管理,而单独提供此命名空间的clb费用可能比你单独租用轻服务器的费用还高,这样显然是极其不合理的!
试图降低费用,我把zhouzhou.net的服务以serverless的方式从k8s中分离。体验之后发现,serverless在现阶段依然是纸上谈兵,通过api网关他视图提供一个web服务的标准生态,比如版本,路由,日志等等重要的基础功能。但是serverless的问题是,第一点,它对代码是入侵的,你的代码必须和你使用的IaaS云服务绑定,而各个供应商之间是没有标准的,这就导致你需要修改代码才能部署,虽然不入侵到业务层面,但完整的测试流程依然是让你头痛的,他可能适用于SaaS方式给客户部署业务的供应商,这样的成本会相对的低廉。第二点,serverless的生态即它的运行时环境其实不友好,你得到的环境都相对的不是最新的,是云商给你做的,可能和你开发环境有非常大的差异,当你发现有因为环境而导致出现问题自己却无法解决的时候,是难受的。第三点,以前有传统的web容器,所以我们有了CGI(通用网关接口)来和各个语言通信,现在由于web容器的服务被api网关全部代替了,那么里面跑的是什么呢?很不幸,以PHP为例,是以内置服务器方式跑,而这个模式在官方手册中不建议跑生产环境。当然这个问题k8s也会碰到,你的镜像大都有套娃,ingress里面套nginx,只是为了看上去平滑兼容,如果有一种通用容器接口,就能解决最后一公里的问题。