微服务与 Kubernetes 容器云的边界

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【2月更文挑战第30天】该文探讨了微服务与Kubernetes集群的关系,主要关注是否应跨多集群部署。理想的状况是每个微服务对应一个Kubernetes集群,配置和注册中心在同一集群内,以减少网络延迟。

微服务与Kubernetes容器云的边界的考量,其实就是思考微服务要不要跨多个Kubernetes集群的问题。比较理想的情况是微服务和Kubernetes完全对齐,也就是一套微服务运行在一套Kubernetes集群上。在这种情况下,微服务、配置中心+注册中心都在相同的Kubernetes集群中。当微服务指向配置中心时,写配置中心的ServiceName即可,网络I/O路径较短。否则,需要通过Kubernetes Ingress访问注册中心(如果容器云的SDN采用overlay模式),网络延迟将会较大。这在微服务数量较多、变更较频繁的时候更为明显。


1)配置+注册中心在一个Kubernetes集群上:如果Kubernetes集群的SDN用的是underlay网络,那么其他Kubernetes集群注册的时候,由于其Pod IP和宿主机IP在同一个网络平面,使得注册中心能够准确识别到Pod的IP。这种方式的弊端体现在如下三个方面。

  • 微服务去注册中心注册时,由于跨Kubernetes集群,网络I/O路径长。
  • 数据中心网络需要打开BGP(用到了类似Caico的underlay SDN方案)。
  • underlay网络方案比较耗费数据中心的IP。


2)配置+注册中心不在一个Kubernetes集群上:如果Kubernetes集群的SDN方案用的是overlay网络,那么其他Kubernetes集群注册的时候,由于Pod IP和宿主机IP不在同一个网络平面,导致注册中心不能准确识别Pod的IP,只能识别到Pod所在Kubernetes宿主机的IP(Pod以SNAT的方式访问集群外部)。


想要解决这个问题,可以考虑使用Pod的多网络平面,也就是给Pod增加第二个虚拟网卡,挂载数据中心到同一个网络平面的IP。这种方式类似macvlan、ipvlan,不用再单独配置DNS,但弊端是当宿主机上启动的macvlan数量较多时,网卡性能会下降。


如果Spring Cloud的边界远大于一个Kubernetes边界,想让一套Spring Cloud分布在很多个Kubernetes集群时,最好把微服务配置中心和注册中心从Kubernetes集群中独立出来,放在虚拟机或者物理机上。这样做的好处是让这个配置+注册中心离所有Kubernetes集群网络都比较近。而且,在虚拟机或者物理机上部署配置+注册中心,当需要注册微服务的时候,也不必再经过类似Ingress的环节,性能也会得到提升。此外,我们可以针对独立的配置+注册中心做高可用或者容灾方案。


注册中心的整体选择思路主要从三个维度考量:应用是否跨开发语言微服务的边界是否大于Kubernetes集群,以及是否限定应用的Service名称

1)应用跨语言,微服务边界不大于一个Kubernetes集群,不限定应用的Service名称:使用Kubernetes平台的etcd。

2)应用跨语言,微服务边界大于一个Kubernetes集群,不限定应用的Service名称:使用应用级注册中心,而且每种语言都需要设置自己的注册中心。

3)应用不跨开发语言,微服务不大于一个Kubernetes边界,不限定应用的Service名称:使用Kubernetes平台的etcd。

4)应用不跨开发语言,微服务大于一个Kubernetes边界,不限定应用的Service名称:使用一个应用级注册中心。

5)限定应用的Service名称:使用应用级注册中心。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes 入门指南:快速上手容器编排
【8月更文第29天】Kubernetes(简称 K8s)是一个开源平台,用于自动化容器化应用程序的部署、扩展和管理。它提供了一种便捷的方式来部署和运行应用程序,而无需关心底层基础设施的细节。本指南将带你从零开始学习 Kubernetes 的基础知识,并帮助你部署第一个应用。
11 0
|
2天前
|
Kubernetes 负载均衡 微服务
Kubernetes 生态系统中的微服务治理
【8月更文第29天】随着微服务架构的普及,管理分布式系统的复杂性也随之增加。Kubernetes 作为容器编排的事实标准,为微服务架构提供了强大的支持。结合像 Istio 这样的服务网格工具,Kubernetes 能够有效地解决微服务治理中的诸多挑战,如服务发现、负载均衡、流量管理和安全策略等。
12 1
|
1天前
|
存储 Kubernetes Cloud Native
探索Python编程的奥秘云原生时代的容器编排:Kubernetes入门与实践
【8月更文挑战第30天】本文以浅显易懂的方式,探讨了Python编程的核心概念和技巧。从基础语法到高级特性,再到实际应用案例,逐步引导读者深入理解Python编程的精髓。通过本文的学习,读者将能够掌握Python编程的基本技能,并激发进一步探索的兴趣。
19 13
|
1天前
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
1天前
|
Kubernetes Cloud Native 云计算
云原生之旅:从容器化到微服务架构的演进
【8月更文挑战第30天】在数字化浪潮中,企业纷纷寻求更高效、灵活的IT解决方案。云原生技术以其独特的优势成为转型的关键。本文将带你了解云原生的核心概念,探索容器化技术的奇妙之处,深入微服务架构的设计哲学,并分享如何在云平台上实现这一切。准备好,我们将启航进入云原生的世界,解锁数字化转型的秘密。
|
2天前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
2天前
|
Kubernetes Shell 容器
k8s临时容器
k8s临时容器
|
1天前
|
运维 Kubernetes Cloud Native
云原生技术入门:从容器到Kubernetes的探索之旅
【8月更文挑战第30天】在数字时代的浪潮中,云计算已成为推动创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭开云原生技术的神秘面纱,从容器化技术的基础出发,逐步深入到Kubernetes集群管理的实际应用。我们将一起见证代码如何转化为可在云端无缝运行的服务,体验技术变革带来的无限可能。
|
1天前
|
Cloud Native 持续交付 开发者
云原生之旅:从容器化到微服务架构的演进
【8月更文挑战第30天】在数字化浪潮中,企业正面临着前所未有的技术挑战与机遇。云原生技术以其灵活性、可伸缩性和高效率成为推动现代软件开发的关键力量。本文将引导您了解云原生的核心概念,探索从容器化技术到微服务架构的演变过程,并揭示这些技术如何助力企业实现敏捷开发和高效运维。我们将通过实际代码示例,展示如何在云平台上部署和管理微服务,以及如何利用云原生技术构建弹性、可扩展的应用程序。无论您是开发者、架构师还是技术决策者,这篇文章都将为您提供深入云原生世界的独特视角和实用知识。
|
1天前
|
Kubernetes Cloud Native 网络安全
云原生入门指南:Kubernetes和容器化技术云计算与网络安全:技术融合的新篇章
【8月更文挑战第30天】在云计算的浪潮中,云原生技术如Kubernetes已成为现代软件部署的核心。本文将引导读者理解云原生的基本概念,探索Kubernetes如何管理容器化应用,并展示如何通过实践加深理解。

推荐镜像

更多
下一篇
云函数