首页 > 其他分享 >在K8S中,有几种Controller控制器并说一下其工作原理及ingress-controller的工作机制。

在K8S中,有几种Controller控制器并说一下其工作原理及ingress-controller的工作机制。

时间:2024-10-24 12:58:50浏览次数:7  
标签:Ingress Controller ingress 工作 controller 集群 原理 Pod

在Kubernetes(K8s)中,Controller控制器是核心组件,它们负责监控集群状态,并确保系统的期望状态与实际状态一致。以下是几种常见的Controller控制器及其工作原理,以及ingress-controller的工作机制的详细介绍:

1. 常见的Controller控制器及其工作原理
  1. ReplicationController
    • 作用:确保指定数量的Pod始终在运行。如果Pod数量不足或过多,ReplicationController会自动调整。
    • 工作原理:通过监控集群中Pod的数量,并与期望的数量进行比较,如果存在差异,则自动创建或删除Pod,以保持Pod数量的稳定。
  2. ReplicaSet
    • 作用:ReplicaSet是ReplicationController的继任者,提供了更丰富的选择标准,如基于集合的选择器。它确保在集群中运行指定数量的Pod副本。
    • 工作原理:与ReplicationController类似,但具有更灵活的选择器和标签管理能力,能够更精确地控制Pod的部署和数量。
  3. Deployment
    • 作用:Deployment是更高级别的控制器,使用ReplicaSet来管理Pod的部署。它允许定义期望的状态,并处理升级和回滚操作。
    • 工作原理:通过声明式配置来管理Pod的部署,可以方便地进行版本升级、回滚和扩展等操作。Deployment会自动创建ReplicaSet来管理Pod的副本,并根据定义的策略进行滚动更新。
  4. StatefulSet
    • 作用:StatefulSet用于管理有状态应用程序,确保Pod具有唯一的标识符,并且在更新和删除时保持稳定的网络标识。
    • 工作原理:为每个Pod分配一个唯一的标识符,并维护Pod之间的顺序性和稳定性。这对于需要稳定网络标识和有序部署的应用程序非常有用,如数据库。
  5. DaemonSet
    • 作用:DaemonSet用于在集群中的每个节点上运行一个Pod副本。
    • 工作原理:确保在每个节点上都运行一个指定的Pod副本,这对于在集群中的每个节点上运行某种系统级别的服务非常有用,例如日志收集器或监控代理。
  6. Job和CronJob
    • 作用:Job用于执行一次性的任务,而CronJob则用于按计划执行周期性任务。
    • 工作原理:Job控制器会创建Pod来执行任务,直到任务完成或失败。CronJob则根据定义的计划时间表来触发Job的执行。
  7. HPA(Horizontal Pod Autoscaler)
    • 作用:根据CPU利用率或自定义指标自动调整Pod的数量。
    • 工作原理:监控Pod的CPU利用率或自定义指标,并根据预设的阈值自动调整Pod的副本数量,以实现资源的动态扩展和缩减。
2. ingress-controller的工作机制

Ingress Controller是Kubernetes中用于处理Ingress对象规则的组件,它提供了HTTP和HTTPS路由功能,使外部流量能够访问集群内部的服务。以下是ingress-controller的工作机制的详细介绍:

  1. 监听Ingress对象变化:Ingress Controller通过Kubernetes API服务器监听Ingress对象的变化。当新的Ingress对象被创建、更新或删除时,Ingress Controller会感知到这些变化。
  2. 解析Ingress规则:Ingress Controller负责解析Ingress对象中定义的规则,包括主机名、路径、后端服务等信息。
  3. 生成配置:Ingress Controller将解析后的规则转化为特定负载均衡器(如Nginx、Traefik等)可以理解的配置。这个配置包括路由规则、TLS设置等。
  4. 应用配置:Ingress Controller将生成的配置应用于负载均衡器,确保外部流量按照Ingress规则进行转发。
  5. 监控:Ingress Controller持续监控负载均衡器的运行状况,并根据需要更新配置。这使得它可以动态地适应集群中服务的变化。

通过以上工作机制,Ingress Controller实现了灵活、动态的路由和负载均衡,为Kubernetes集群中的服务提供了统一的入口点和流量管理能力。常见的Ingress Controller实现包括Nginx Ingress Controller、Traefik Ingress Controller、HAProxy Ingress Controller等,用户可以根据自身需求选择合适的Ingress Controller进行部署和使用。

标签:Ingress,Controller,ingress,工作,controller,集群,原理,Pod
From: https://www.cnblogs.com/huangjiabobk/p/18499384

相关文章

  • SlugDungeon Apple Model-View-Controller
    SlugDungeonAssignment2Semester2,2024CSSE7030Duedate:25October2024,15:00GMT+101IntroductionInthisassignment,youwillimplementagameinwhichaplayermustescapefromadungeonofslugs.Unlikeassignment1,inthisassignmentyouwillbe......
  • Unity CharacterController基本属性
    CharacterController优点:已有的碰撞体最小移动距离限制:通常设置为0,如果角色试图移动到指示值以下,根本移动不了,目的是为了消除潜在的不需要的抖动皮肤宽度限制:避免卡在其他碰撞体中,在碰撞体进行碰撞检测拦截之前,皮肤宽度已经在这的基础上,提前做了一次碰撞拦截,但它会更柔和,允许......
  • 蓝牙Controller错误代码全面概览
    目录一、引言二、蓝牙错误代码概览三、错误代码详细描述3.1.UNKNOWNHCICOMMAND(0x01)3.2.UNKNOWNCONNECTIONIDENTIFIER(0x02)3.3.HARDWAREFAILURE(0x03)3.4.PAGETIMEOUT(0x04)3.5.AUTHENTICATIONFAILURE(0x05)3.6.PINORKEYMISSING(0x06)3.7.M......
  • Linux DMA Engine framework(3)_dma controller驱动
    1.前言本文将从provider的角度,介绍怎样在linuxkerneldmaengine的框架下,编写dmacontroller驱动。2.dmacontroller驱动的软件框架设备驱动的本质是描述并抽象硬件,然后为consumer提供操作硬件的友好接口。dmacontroller驱动也不例外,它要做的事情无外乎是:1)抽象并控制DMA控......
  • Dungeon Crawler Grid Controller 地牢移动控制器
    GridController是一种基于网格的第一人称控制器,易于设置,但功能强大且通用。不需要脚本。非常适合地牢爬虫。特征:实时或回合制运动平稳移动或瞬间捕捉到网格位置支持倾斜、下降和蹲伏自由外观相机可选头部摆锤迷你地图用于脚步声和障碍物反弹声的表面系统触发器和与......
  • java代码生成器(controller,service,mapper)
    packagecom.cn.codeGenerator;importjava.awt.*;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.sql.*;importjava.util.ArrayList;importjava.util.List;publicclassCodeGenerator{privatestaticfinalStri......
  • 针对所有的controller 添加出入参log日志打印
    packagecom.aide.web.tool;importlombok.extern.slf4j.Slf4j;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.Around;importorg.aspectj.lang.annotation.Aspect;importorg.springframework.stereotype.Component;importjava.ut......
  • 过滤器拦截器拦截了request后,controller的@RequestBody 无法获取request内容,报错 Requ
    SpringMVC的拦截器、过滤器、Controller之间的关系 众所周知所有的post请求中的body参数是已流形式存在的,而流数据只能读取一次(为啥看这里),如果在拦截器和过滤器中需要对post参数进行处理的话,就会报Requiredrequestbodyismissing异常。既然知道原因,那只要能将流保存起来......
  • 在K8S中,ingress 有何作用?
    在Kubernetes(简称K8S)中,Ingress是一种API资源对象,用于管理从集群外部到集群内部服务的HTTP和HTTPS连接。它主要用来定义网络路由规则,允许外部用户通过特定的路径访问部署在集群内的应用服务。Ingress控制器则是实际实现这些规则的组件,通常运行在一个或多个Pod中,并监听......
  • CAN(Controller Area Network)总线的仲裁机制
    CAN(ControllerAreaNetwork)总线的仲裁机制是其核心特性之一,它确保了在多节点环境中数据能够高效、公正地传输。以下是对CAN仲裁机制的详细解释和介绍:一、仲裁机制概述在CAN总线网络中,各个节点地位平等,没有固定的主节点或从节点之分。这种设计使得每个节点在需要时都可以试图......