当前位置: 首页 > 知识库问答 >
问题:

将微服务部署到kubernetes中的最佳实践

江超英
2023-03-14

考虑以下情况:

  • 我有一个主要的重型服务和许多其他小型微服务。
  • 小型微服务只使用大型服务。
  • 只有主要的重型服务才会向公共Internet公开。

部署这些服务的最佳实践是什么?

在同一个kubernetes集群中:

  • 主重型服务负载均衡器
  • 将其他小型微服务作为集群IP(以保护它们免受公共internet的攻击)。

这是个好办法吗?

共有2个答案

舒永嘉
2023-03-14

是的,你是对的,好的方法是使用负载均衡器来管理来自公众的低流量和高流量。当您定义最小和最大POD时,它会自动增加大流量的POD数量,而减少低流量的POD数量。对于您不想公开给公众的服务,请将它们设置为集群IP。

夏振国
2023-03-14

这里有一些误解。

关于微服务的术语不是关于规模的,而是更多的是一个组织的东西。十年前,整个系统是作为一个整体部署的,但现在建议团队的规模不要超过5-8人,这些团队应该按照自己的部署周期以自己的速度工作。因此,这一整体必须分解成更小的服务。这种体系结构模式中的服务被称为微服务--但并不是说它们是小的还是大的。

您的所有服务都应该作为部署部署在Kubernetes上,并且服务应该是无状态的。所以即使是“主重服务”也应该是无状态的,并且可能会扩展到多个副本。

您的正确之处在于,只有需要向Internet公开的服务才应该向Internet公开。

您的“重型服务”应该用LoadBalancer类型的ServiceNodePort类型的Service公开,实际上更多地取决于您使用的是什么入口控制器。例如。如果您正在使用Google Kubernetes引擎,则应该将其公开为nodeport类型。是的,其他应用程序应该有clusterIP类型的服务

值得注意的是,所有Kubernetes服务对象都将为副本提供负载平衡功能。服务类型,例如LoadBalancerNodePortClusterIP,更多的是关于如何公开服务。

 类似资料:
  • 我目前正在开发一个云备份解决方案,其中涉及到多达8个在spring-boot中开发的微服务,并使用mongo DB atlas作为持久层。 微服务包括Netflix ZUUL API网关和Netflix Eureka作为服务发现机制。微服务被要求彼此进行明显的对话。 对微服务进行了对接。到目前为止,我已经使用docker-compose文件将它们部署到EC2实例中,该文件列出了使用docker网络

  • 我有一个JavaEE EAR项目,我想从Eclipse无缝地部署到运行Debian和WildFly的远程服务器。我今天部署使用FTP删除。WildFly部署文件夹中的ear项目(然后当然创建.dodeploy),但这不是一个非常灵活的解决方案,因为我希望能够立即推动更改。 是否有人建议这种解决方案的最佳做法是什么?我在网上搜索过,但找不到任何具体的指南,尽管在某种程度上使用Maven似乎很流行。非

  • 本文向大家介绍设计微服务的最佳实践是什么?相关面试题,主要包含被问及设计微服务的最佳实践是什么?时的应答技巧和注意事项,需要的朋友参考一下 以下是设计微服务的最佳实践: 为每个微服务分开数据存储 将代码保持在类似的成熟度等级上 为每个微服务进行单独的构建 部署到容器中 将服务器视为无状态的

  • 为Jenkins部署保存舵图的最佳实践是什么?我对遵循标准的实现方式感到困惑。我对此CI/CD管道是新手。

  • 我是网页开发的初学者。我用的是Vert.x框架。我在aws上获得了服务器的app.jar文件。每次我用这个命令运行它时: 但我不确定,这是正确的方法(我认为这是非专业的)。谁能说,什么是最佳实践?我听说,大多数应用程序都部署在Web应用程序容器上,例如雄猫,JBoss,Jetty等。请告诉我正确的方式。