K8s控制器
一、Replicaset控制器概述
RS是kubernetes中的副本控制器,全称Replicaset,主要作用是控制由其管理的pod,使pod的副本数量始终维持在预设的个数。保证一定数量的pod能够在集群中正常运行,rs会持续监听pod的运行状态,在pod发生故障时会自动重启pod,pod不足时,运行新的副本
kubernetes官方不推荐直接使用,而是用Deployment取而代之,他是比rs更为高级的控制器,它可以管理rs并提供有用的特性,最重要的deployment支持声明式更新,好处就是不会丢失历史变更。所以deployment不会直接管理pod对象,而是由deployment管理replicaset,再由replicaset负责管理pod对象
1.2、Replicaset工作原理
Replicaset核心是代用户创建指定副本,并确保pod副本一直处于满足用户期望的数量,起到多退少补的作用,并且还具有自动扩缩容机制。
Replicaset控制器主要由三部分组成:
1、用户期望的副本数:用来指定此控制器管控的pod副本数量
2、标签选择器:指定哪些pod是自身管理的,如果通过标签选择器选到的pod副本数量少于用户指定数量,就要用到下面组件:
3、pod资源模板:如果集群中现存的pod数量不够用户定义的期望数量,控制器会新建pod
1.3Deployment概述
Deployment是kubernetes常用控制器,为Reployment和pod的创建提供声明式定义,在Deployment中描述资源对象的期望状态,Deployemt会按照一定速率把实际状态改为期望状态,定义一个Deployment控制器会创建一个Repliaset控制器,通过Replicaset在创建pod。
使用Deployment而不是直接使用Reployment,是因为Deployment拥有好的特性,如滚动升级和回滚等。
声明式定义可以直接修改资源清单yaml文件,通过kubecat apply -f name.yaml命令就可以更改资源状态。
Deployment控制器是建立在rs之上的,可以管理多个rs,每次更新镜像版本,都会生产新的rs,把旧的rs替换,虽说rs同时存在,但只有一个运行。
1.4Deployment工作原理
典型的用例如下:
使用 Deployment 来创建 ReplicaSet。ReplicaSet 在后台创建 pod。检查启动状态,看它是成功还是失败。然后,通过更新 Deployment 的 PodTemplateSpec 字段来声明 Pod 的新状态。这会创建一个新的 ReplicaSet,Deployment 会按照控制的速率将 pod 从旧的 ReplicaSet 移动到新的 ReplicaSet 中。如果当前状态不稳定,回滚到之前的 Deployment revision。每次回滚都会更新Deployment 的 revision。
nginx的yaml简单定义

对执行后的pod数量进行扩容
kubectl scale deployment nginx-deployment --replicas 10
对其镜像版本进行升级
kubectl set image deployemt/nginx-deployemt nginx=nginx:1.19.6
对镜像版本进行回滚
kubectl rollout undo deployment/nginx-deployment
Deployment典型应用场景包括:
定义Deployment来创建pod和replicaset
滚动升级和回滚应用
扩容和缩容
暂停和继续Deployment
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了