首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes-SiderCar&服务网格(Service Mesh)

Kubernetes-SiderCar&服务网格(Service Mesh)

作者头像
运维小路
发布2025-04-01 09:19:25
发布2025-04-01 09:19:25
25100
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们前面讲Pod介绍的时候就介绍过一个Pod里面可以有多个容器,不同的容器承担不同的任务。在前面介绍InitContainer的时候也介绍过初始化容器是做什么的,实际上这个SiderCar也是在Pod里面跑多个容器,但是他们有啥区别呢?

严格来说SiderCar并不是属于Kubernnetes里面的资源,而是针对Pod里面多容器的一种设计模式,或者通俗来说就是一种Pod里面的多容器的一种用法,前面我们的多容器实际上还是和业务强相关的,但是我们通过SiderCar这里注入的Pod实际上它和业务并不相关,而是为了达到某一种目的向里面注入的非业务容器。

在 Kubernetes(简称 K8s)中,sidecar 是一种设计模式,它涉及在同一个 Pod 中运行一个或多个辅助容器来支持主容器(主应用程序)。Sidecar 容器与主容器同时运行,可以执行多种辅助任务,如日志记录、监控、配置、更新、代理等。

以下是 sidecar 模式的一些常见用途:

  1. 日志收集:Sidecar 可以用来收集主应用程序容器的日志,并将其转发到中央日志管理系统。
  2. 服务网格代理:在服务网格架构中,如 Istio,sidecar 代理(通常是 Envoy)被用于处理服务间的通信,包括流量管理、安全性、策略实施等。
  3. 配置管理:Sidecar 可以用来从配置中心获取配置,并将其传递给主应用程序容器。
  4. 健康检查和自愈:Sidecar 可以监控主应用程序的健康状况,并在检测到问题时重启主应用程序或 Pod。
  5. 资源清理:在主应用程序容器停止后,sidecar 可以负责清理资源,如临时文件或锁。
  6. 适配和桥接:当主应用程序需要与外部系统交互,但又不方便直接修改主应用程序时,可以使用 sidecar 进行适配或桥接。

下面是一个简单的 Kubernetes Pod 配置示例,其中包含一个主应用程序容器和一个 sidecar 容器:

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: v1
kind:Pod
metadata:
name:myapp-pod
labels:
    app:myapp
spec:
containers:
-name:myapp-container
    image:myapp-image
    ports:
    -containerPort:
-name:sidecar-container
    image:sidecar-image
    volumeMounts:
    -name:shared-logs
      mountPath:/var/log
volumes:
-name:shared-logs
    emptyDir: {}

在这个例子中,myapp-container 是主应用程序容器,而 sidecar-container 是辅助容器,它可能负责日志收集等任务。两个容器共享 shared-logs 卷,这样 sidecar 容器可以访问主应用程序的日志文件。

使用 sidecar 模式可以带来以下好处:

  • 解耦:通过将辅助任务从主应用程序中分离出来,可以简化主应用程序的设计和部署。
  • 灵活性:可以独立于主应用程序更新和扩展 sidecar 容器。
  • 可重用性:相同的 sidecar 容器可以在多个不同的应用程序中使用。

基于 Sidecar 模式,已经发展出了一些重要的产品和框架,其中最著名的包括:

服务网格(Service Mesh):服务网格是一种用于处理服务间通信的基础设施层。它通过在应用程序旁部署轻量级代理(即 Sidecar)来控制服务间的通信。Istio 和 Linkerd 是服务网格的两个主要实现,它们利用 Sidecar 模式来提供负载均衡、服务发现、流量管理、熔断、遥测等功能。

Rainbond:Rainbond 是一个基于 Kubernetes 的云原生应用管理平台,它集成了 Sidecar 模式,用于实现服务网格等功能。它通过 Sidecar 容器来扩展和增强应用程序的能力

云原生技术:在云原生技术领域,Sidecar 模式被广泛应用于构建高度可扩展、弹性和安全性的微服务架构。这种模式有助于降低微服务架构的复杂性,并提供了许多关键功能,如日志记录、监控、配置管理、服务发现等。

Service Mesh 是一种架构模式,用于处理服务间通信。随着微服务架构的流行,应用程序被拆分为更小、独立部署的服务单元,这些服务需要相互之间进行安全且可靠的通信。Service Mesh 提供了一个基础设施层来管理这些服务间的复杂通讯。

服务网格的组件

  1. 数据平面:数据平面由一组智能代理(通常称为 sidecar)组成,这些代理与服务实例一起部署在同一个主机上。每个代理负责处理入站和出站的网络通信,例如请求路由、负载均衡、熔断、重试等。
  2. 控制平面:控制平面是服务网格的大脑,它负责管理和配置数据平面代理。控制平面通常包括以下功能:
    • 服务发现
    • 路由规则配置
    • 安全策略实施
    • 监控和遥测数据的聚合

服务网格的关键功能

动态服务发现:服务网格能够自动发现服务实例,并更新服务列表,以便正确路由请求。

负载均衡:服务网格可以基于不同的算法(如轮询、最小连接数等)分配流量到服务实例。

故障恢复:当服务实例不可用时,服务网格可以自动尝试其他实例,或者执行重试策略。

熔断:为了防止系统雪崩,服务网格可以在服务实例无法处理更多请求时自动断开连接。

安全通信:服务网格可以加密服务间的通信,并提供服务身份验证和授权。

监控和跟踪:服务网格收集有关服务间通信的遥测数据,包括延迟、错误率和其他关键指标。

流量控制:服务网格允许管理员定义细粒度的流量控制策略,如金丝雀部署、蓝绿部署等。

服务网格的优势

解耦网络功能:服务网格将网络功能从应用程序代码中解耦出来,使得开发者可以专注于业务逻辑。

透明性:服务网格对应用程序透明,不需要修改应用程序代码即可实现网络功能。

跨语言和平台:服务网格适用于多种编程语言和平台,为微服务提供一致的网络管理。

易于管理和维护:服务网格提供集中式的管理和控制,简化了运维工作。

Service Mesh 架构图
Service Mesh 架构图

简单来说就是原来服务A访问服务B,以前是直接访问,现在由于sidecar和服务是在同一个网络层面,就可以通过控制sidecar注入不同的访问规则从而实现对服务A访问服务B鉴权,熔断等操作。

由于目前我对这个还没有真实使用经验,而且在中小规模集群里面也很难用到这个功能,所以我这里只能做一个很简单介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务网格的组件
  • 服务网格的关键功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档