友好速搭 Kubernetes 项目 Recap
Kubernetes 项目总结
2018 年 10 月,决定开始容器化项目,采用 Kubernetes 做容器编排,使用腾讯云 TKE 产品,目前版本 1.10.5
2018 年 11 月,团队学习了一个月 Kubernetes,参考过其他公司的最佳实践,总结出一套容器运维流程,继续采用 Jenkins 做容器项目的 CI/CD 工具,根据 12 factor app 原则改造现有项目
选用 Gitops 作为新的开发运维流程,Kubernetes 运维细节放在一个项目,里面包含了所有项目的 Kubernetes 资源描述文件,也就是说一个 yaml 文件描述了一个项目的 Deployment,Service,HPA 等
2018 年 12 月,开始迁移测试环境应用到 Kubernetes
2019 年 1 月,完成所有应用的容器化改造,
容器化之前项目发布和运行的以依赖只有 gitlab 和 腾讯云主机,容器化之后的依赖有 gitlab,云主机,容器服务 TKE,容器镜像服务 Tencenthub,所以加入了腾讯云容器服务群和 Tencenthub 群,加快问题的沟通和解决速度。两个群号分别是:434653499,835816415
为所有 web 项目增加了 /status 和 /readiness 接口,因为 Ruby 的 puma 服务器对 SIGTERM 信号的处理不能自定义,所以使用了 preStop 钩子给进程发送 QUIT 信号进行修改 /readiness 接口的返回状态码
nginx 项目决定不放进容器,因为公司有独立 ip 的业务,目前是用腾讯云负载均衡实现的,所以每个 web 服务的 Service 的 type 是 LoadBalancer,设置成内网负载均衡,nginx 的 upstream 改成这个负载均衡的 IP
安装了一系列监控运维软件,Prometheus, NodeExporter, MetricServer(为了支持 HPA),WeaveScope 方便开发查看发布失败的日志和使用终端连接到容器
日志使用 TKE 的 Fluentd,日志直接发到 Kafka,由 Logstash 消费并新增名称和 PODNAME 一致的索引
试用了 Elastic APM,是个亮点,建议大家使用,不缺钱的用 NewRelic 也好
必须先完成最复杂的那个项目的容器化工作,这样所有没考虑到的问题都会一次过出现
必须对公司内部所有开发者做 Docker 和 Kubernetes 培训,只有运维和架构师会用 Kubernetes 的话那不是 Devops 文化
资料
Kubernetes 官方文档,中英文都有,新手建议看 5 次以上
搜 Kubernetes Best Practices,一般你都会搜到一个叫 @sandeepdinesh 的人的视频,很不错
看完 Kelsey Hightower 的相关分享和视频
建议采用 Gitops,网上也有很多资料
一定要学会使用 kubectl 命令,一般来说这是解决问题的最后一根稻草
总结好当前云厂商的 Kubernetes 扩展模板语法,例如我们总结了在腾讯云上创建内网负载均衡,挂在云硬盘等语法
经验
不是所有应用都一定要上容器,例如 Nginx,数据库等。结合业务,一些低频更新的应用也可以不采用容器化方式部署
一定要给开发足够的工具来提高开发和 debug 效率,我们提供了 Bearychat 来接收 Jenkins 的 CI/CD 通知,用 WeaveScope 来调试线上应用
关于友好速搭
友好速搭是国内领先的电商服务和云技术提供方。依托技术、营销、企业服务三大业务,为高端零售品牌打造个性化交易系统,并快速链接行业资源与精准流量,使品牌价值最大化。
现在友好速搭的网站应用已经使用上了 Kubernetes 容器编排服务,支持秒级弹性扩容,只能灵活应对电商促销的流量洪峰,我们将一如既往的优化系统,提供更好更稳定的服务