首页 > 其他分享 >K8S-SidecarSet详解

K8S-SidecarSet详解

时间:2023-06-12 11:23:21浏览次数:38  
标签:容器 container 详解 sidecar SidecarSet Pod K8S Sidecar

K8S-SidecarSet

SidecarSet是Kubernetes的一个CRD(Custom Resource Definition),扩展自Deployments API Group,主要用于在Pod里注入一个或多个辅助容器(sidecar container)。

Sidecar容器是一种特殊的容器,它和主应用容器共享同一个网络、存储等资源,并在需要时协助主应用完成一些额外的功能,例如:日志收集、监控数据采集、鉴权、网关转发等等。通过使用Sidecar容器,可以帮助应用将一些复杂的问题分解成更简单的组件,并使得这些功能逻辑独立封装,避免主应用耦合过重。

SidecarSet的作用是方便管理并针对特定的Pod引入辅助容器。在有些情况下,所有的Pod都必须引入相同的辅助容器,例如:Pod监控特定指标,此时可以使用DaemonSet;而在其他情况下,只有某些Pod需要引入特定的辅助容器,例如:进行慢查询日志采样,同时又要保证采样逻辑不干扰到主应用,这时候就可以使用SidecarSet来实现。

其原理也较为简单,当对某个命名空间下符合选择器匹配的Pod的资源版本注释进行更新时,SidecarSet会触发集群升级流程,将对应的Sidecar容器注入到这些Pod中。如果节点上已经存在相应名称的Sidecar容器,则会更新为SidecarSet定义的新版本;否则,就会创建新的Sidecar容器实例,并将其附加到Pod的容器栈中。在Pod删除或者SidecarSet被删除后,注册到该SidecarSet的所有Sidecar容器也会随之被删除。


在 Kubernetes 中,如果您需要让 Pod 自动创建代理容器来协调和管理多个容器之间的网络通信和存储访问,可以在 Pod 的 YAML 定义文件中加入如下的 sidecar 容器定义:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: main-container
      image: my-app-image
      # ...
  # 添加 sidecar 容器的定义
  sidecarContainers:
    - name: sidecar-container
      image: my-sidecar-image
      # ...
在这个例子中,我们通过添加 sidecarContainers 字段,定义了一个名为 sidecar-container 的容器。Pod 运行时,Kubernetes 将会自动启动和管理这个代理容器,并保证它与该 Pod 中的主容器一起协同工作。

请注意,在使用代理容器时,你需要特别留意容器之间的服务发现、数据共享和安全隔离等问题,以确保应用程序的正确性和可靠性。

标签:容器,container,详解,sidecar,SidecarSet,Pod,K8S,Sidecar
From: https://www.cnblogs.com/anslinux/p/17474505.html

相关文章

  • git命令详解
    #首先进入到一个目录中。这个目录专门为gitlab使用。cd/data/gitlab#登录git仓库gitconfig--globaluser.name"用户名"#设置用户名gitconfig--globaluser.email"用户邮箱"#设置邮箱gitconfig--globaluser.name#查看用户名是否配置成功gitconfig--glo......
  • k8s查看资源的api版本
    #方法1[root@test-masterdeployment]#kubectlexplaindeploymentKIND:DeploymentVERSION:apps/v1DESCRIPTION:DeploymentenablesdeclarativeupdatesforPodsandReplicaSets.FIELDS:apiVersion <string>APIVersiondefinesthever......
  • 【LeetCode.384打乱数组】Knuth洗牌算法详解
    前两天看网易面筋得知网易云的随机歌曲播放使用了这个算法,遂找题来做做学习一下打乱数组https://leetcode.cn/problems/shuffle-an-array/给你一个整数数组nums,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是等可能的。实现Solutionclass:Solution......
  • 内存池(MemPool)技术详解
    概述内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。经典的内存池技术经典的内存池(MemPool)技术,是一种用于分配大量大小相同的小对象的......
  • 5分钟打通办公网与K8S集群网络
    在K8S的使用中,我们经常有通过办公网访问K8S集群的诉求,虽然可以通过NodePort等方式访问K8S,但在访问多副本中间件等情况下NodePort就捉襟见肘了。今天我们给大家介绍一个快捷的网络打通方案,可通过域名来轻松访问K8S集群。首先跟大家介绍一个开源工具:telepresence,我们可以使用它为......
  • 24 k8s安全认证
    一、安全认证1、访问控制概述客户端进行认证和鉴权操作。客户端在Kubernetes集群中,客户端通常有两类:UserAccount:一般是独立于kubernetes之外的其他服务管理的用户账号。ServiceAccount:kubernetes管理的账号,用于为Pod中的服务进程在访问Kubernetes时提供身份标识。2、认证、授权......
  • Python 解析配置模块之ConfigParser详解
      yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子:defaddlist(alist):foriinalist:yieldi+1取出alist的每一项,然后把i+1塞进去。然后通过......
  • linux sort,uniq,cut,wc命令详解
        sortsort命令对File参数指定的文件中的行排序,并将结果写到标准输出。如果File参数指定多个文件,那么sort命令将这些文件连接起来,并当作一个文件进行排序。sort语法[root@www~]#sort[-fbMnrtuk][fileorstdin]选项与参数:-f:忽略大小写的差异,例如A与......
  • Redis之Redisson原理详解
    目录1Redisson1.1简介1.2与其他客户端比较1.3操作使用1.3.1pom.xml1.3.2配置1.3.3启用分布式锁1.4大致操作原理1.5RLock1.5.1RLock如何加锁1.5.2解锁消息1.5.3锁续约1.5.4流程概括1.6公平锁1.6.1java中公平锁1.6.2RedissonFairLock1.6.3公平锁加锁步骤1Redisso......
  • STL之Stack与queue的模拟实现与duque的底层结构(3千字长文详解)
    STL之Stack与queue的模拟实现与duque的底层结构设计模式的概念设计模式像是古代的兵法,是以前的人总结出来的一些在特定的情况下,某种特定的好用的方法总结STL中迭代器也是一种设计模式——==迭代器模式==STL中stack和queue的实现就是使用了一种设计模式——==适配器模式!==适......