Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes部署模式&;RESTAPI版本_Rest_Kubernetes_Devops - Fatal编程技术网

Kubernetes部署模式&;RESTAPI版本

Kubernetes部署模式&;RESTAPI版本,rest,kubernetes,devops,Rest,Kubernetes,Devops,我有一个带有多个API版本的RESTAPI。每个API后端都由几个微服务组成。可以公平地假设,只有最新的RESTAPI资源/代码拥有最多的客户流失。较旧的版本会因为功能后端口(很少)或错误修复(大部分)而出现混乱。我想得到关于什么DevOps模式最适合这个场景的建议——假设我们使用Kubernetes来建模我们的服务网格 请注意,我们的API大多是异步的,因此可以在同一个代码库(打包在单个容器中)中支持多个API版本 鉴于上述情况,这些配置都是可能的 每个API版本的服务yaml 具有多个po

我有一个带有多个API版本的RESTAPI。每个API后端都由几个微服务组成。可以公平地假设,只有最新的RESTAPI资源/代码拥有最多的客户流失。较旧的版本会因为功能后端口(很少)或错误修复(大部分)而出现混乱。我想得到关于什么DevOps模式最适合这个场景的建议——假设我们使用Kubernetes来建模我们的服务网格

请注意,我们的API大多是异步的,因此可以在同一个代码库(打包在单个容器中)中支持多个API版本

鉴于上述情况,这些配置都是可能的

  • 每个API版本的服务yaml
  • 具有多个pod模板的单服务yaml(每个API版本一个)
  • 功能性服务YAML——一个用于前端,另一个用于微服务(消息代理、处理工作者等的POD)
需要考虑的其他要点:

  • 建议将部署分开群集或部署到同一群集(对于API版本)。如果是,这是否会影响对特定API版本的更新

我正在根据您以前的经验寻找任何指定的模式或建议。

通常,部署管理Pod的副本,每个Pod运行特定的容器映像。如果您的API后端由多个微服务组成,那么每个微服务都是一个部署。处理API请求的微服务通过(面向客户端)服务公开

对于多个API版本,您可以只为每个版本复制此功能,并且可以在服务前面放置入口,根据请求的API版本将流量路由到其中一个服务


如果将所有API版本放在同一个容器中,则更新期间可能存在状态不一致的问题:1)在部署中,两个Pod版本在短时间内并存(如果使用默认滚动更新);2) 在短时间内,您可能会将已更新和尚未更新的微服务放在一起。

通常,部署会管理Pod的副本,并且每个Pod运行一个特定的容器映像。如果您的API后端由多个微服务组成,那么每个微服务都是一个部署。处理API请求的微服务通过(面向客户端)服务公开

对于多个API版本,您可以只为每个版本复制此功能,并且可以在服务前面放置入口,根据请求的API版本将流量路由到其中一个服务


如果将所有API版本放在同一个容器中,则更新期间可能存在状态不一致的问题:1)在部署中,两个Pod版本在短时间内并存(如果使用默认滚动更新);2) 在短时间内,您可能会将已更新和尚未更新的微服务放在一起。

如果我理解正确,您的建议是将每个微服务作为一个单独的部署(以便它们可以独立地使用副本进行扩展)以及针对微服务的每个API版本的一组服务,该微服务处理入口网关前端的客户端请求。这是有道理的。如果有多个集装箱吊舱,会有问题吗?我希望我们的大多数部署和服务至少包含FluentD/日志工具。是的,没错。请注意,不处理客户端请求的微服务还需要一个服务(ClusterIP类型),以便其他微服务可以访问它们。吊舱中的侧车容器没有问题。它只是Pod的一部分,Pod是一个单元。如果我理解正确,您的建议是将每个微服务作为一个单独的部署(这样它们就可以独立地使用副本进行扩展),并为每个API版本为微服务提供一组服务,用于处理入口网关前面的客户端请求。这是有道理的。如果有多个集装箱吊舱,会有问题吗?我希望我们的大多数部署和服务至少包含FluentD/日志工具。是的,没错。请注意,不处理客户端请求的微服务还需要一个服务(ClusterIP类型),以便其他微服务可以访问它们。吊舱中的侧车容器没有问题。它只是吊舱的一部分,吊舱是一个单元。