Kubernetes确实很受欢迎,但是很难上手,而且传统开发中有很多实践都无法转化为云原生开发。
在本文中,我们研究了10个关于Kubernetes部署的反模式。
1.将配置文件放在Docker映像的内部/旁边:将您的配置数据外部化。您可以使用ConfigMap和Secrets或类似的东西。
2.不使用Helm或其他类型的模板:使用Helm或Kustomize可以简化您的容器编排并减少人为错误。
3.以特定顺序部署事物。应用程序不应崩溃,因为依赖项尚未就绪。利用Kubernetes的自我修复机制并实现重试和断路器。
4.在不设置内存和/或CPU限制的情况下部署Pod:您应该考虑设置内存和CPU限制以减少资源争用的风险,尤其是在与其他人共享群集时。
5.latest在生产中将标签拉到容器中:切勿使用最新的标签。始终根据语义版本规范使用诸如v1.4.0 /有意义的东西,并使用不可变的Docker映像。
6.通过杀死Pod来部署新的更新/补丁,以便它们在重新启动过程中提取新的Docker映像:对代码进行版本控制,以便更好地管理发布。
7.在同一群集中混合生产和非生产工作负载:如果可以,在单独的群集中运行生产和非生产工作负载。这样可以减少资源争用和意外环境转换对生产环境的风险。
8.不对任务关键型部署使用蓝色/绿色或金丝雀(Kubernetes的默认滚动更新并不总是足够的):您应该考虑使用蓝色/绿色部署或金丝雀版本,以减轻生产中的压力并获得更有意义的生产结果。
9.没有度量标准来了解部署是否成功(您的运行状况检查需要应用程序支持):您应该确保监视部署以避免任何意外。您可以使用Prometheus,Grafana,New Relic或Cisco AppDynamics之类的工具来帮助您更好地了解部署情况。
10.云供应商锁定:将自己锁定在IaaS提供商的Kubernetes或无服务器计算服务中:您的业务需求可能随时发生变化。您不应无意间将自己锁定在云提供商中,因为您可以轻松提升和转移云本机应用程序。
领取专属 10元无门槛券
私享最新 技术干货