k8s-replicaset控制器

前面我们一起学习了pod的原理和一些基本使用,但是在实际使用的时候并不会直接使用pod,而是会使用各种控制器来满足我们的需求,kubernetes中运行了一系列控制器来确保集群的当前转台与期望状态保持一致,他们就是kubernetes的大脑,例如,replicaset控制器负责维护集群汇总运行的pod数量,node控制器负责监控节点的状态,并在节点出现故障时及时作出相应,总而言之,在kubernetes中,每个控制器只负责某种类型的特定资源。

控制器 kubernetes控制器会监听资源的 创建/更新/删除事件,并出发reconcile函数作为响应, 调整过程称为reconcile loop 调谐循环,或者sync loop 同步循环,reconcile是一个使用资源对象的命名空间和资源对象名称来调用的函数,使得资源对象的实际状态与资源清单中定义的状态保持一致,调用完成后,reconcile会将资源对象的状态更新为当前实际状态,就是kubernetes项目中的一个通用编排模式,控制循环control  loop 

repliaSet

RS 的主要作用就是维持一组pod副本的运行,保证一定数量的pod的集群中正常运行,replicaset控制器会将持续监听,控制这些pod的运行状态,pod发送故障数量减少或者增加时会触发调用过程,始终保持一定副本数量

apiVersion: app/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
  namespace: dafault
spec:
   replicas:3
   selector:
     matchLabels:
       app: nginx
   template:
      metadata:
        labels:
          app: nginx
      spec:
        containers:
        - name: nginx
          images: nginx
          ports:
          - containerPort: 80
         
    

上面的yaml文件结构和我们之前定义的pod看上去没太大两样,有常见的apiVersion ,kind,metadata,在spec下面描述的replicaSet的基本信息,其中包含三个重要内容

replicas 表示期望的pod的基本数量

selector :Label Selector用来匹配要控制的pod标签,需要和下面的pod模板中的标签一致

template: pod模板,实际上就是以前我们定义的pod内容,相当于pod的描述以模板的形式嵌入到replicaset中来

pod模板  template  这个概念非常重要,因为后面我们讲解到的大多数控制器都会使用pod模板来统一定义它所要管理的pod

 

通过查看rs kubectl  get  rs  nginx-rs  可以看到当前资源对象的描述信息,包括SESIRED   CURRENT  READY  的状态值,创建完成后

kubectl   get pods  -l  app=nginx

查看pod状态,selector选中,matchLabels。 -l  app=nginx ,创建是使用的是默认的namespace:dafault,此处不需要代  -n

可以看到现在有3个pod,这三个pod就是我们在RS声明的副本数  replicas:3

可以看出又重新出现了一个pod,这个就是上面我们说的replicaSet控制器为我们做的工作,我们在yaml文件中声明了3个副本,然后删除了一个副本,这时候pod,DESIRED和CURRENT不一致,所以就需要启动一个新的pod来保持三个副本,这个过程上面我们说了就是调谐的过程,同样可以查看RS的描述信息来查看到相关的事件信息

[root@master1 ~]# kubectl  describe  rs  nginx-rs
Name:         nginx-rs
Namespace:    default
Selector:     app=nginx
Labels:       <none>
Annotations:  <none>
Replicas:     3 current / 3 desired
Pods Status:  3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type    Reason            Age   From                   Message
  ----    ------            ----  ----                   -------
  Normal  SuccessfulCreate  44m   replicaset-controller  Created pod: nginx-rs-6pgn4
  Normal  SuccessfulCreate  44m   replicaset-controller  Created pod: nginx-rs-vrn6z
  Normal  SuccessfulCreate  44m   replicaset-controller  Created pod: nginx-rs-rwnnm
  Normal  SuccessfulCreate  43m   replicaset-controller  Created pod: nginx-rs-529q6

可以发现最开始通过replicaSet控制器创建了3个pod,后面我们删除了pod后,replicaSet控制器又为我们创建了一个pod,和上面我们的描述是一致的,如果这个时候我们吧RS 资源对象replicas改为2

 可以看到replicaSet控制器在发现我们的资源声明中副本数变为2后,就主动删除了一个pod,这样副本数就和期望保持一致了

我们可以查看一个pod的描述信息可以看到这个pod的所属控制器信息。另外被replicaSet持有的pod有一个metadata.ownerReferences指针指向当前的replicaSet,表示当前的pod的所有者,这个引用主要会被集群中的垃圾收集器使用以清理丢失所有者的pod对象,这个ownerRefences和数据库中的外键是不是非常类似。

如果要彻底删除pod,我们就只能删除RS对象

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值