【K8s】控制器
目录
3.Deployment 控制器是如何工作的,举例说明其常见用途。解释DaemonSet,列举其使用场景。
1.说明K8s控制器的作用?
Kubernetes控制器是控制平面的核心组件,采用“控制循环”机制,持续监控集群中资源的实际状态,并努力使其与用户定义的期望状态(如Pod副本数、镜像版本等)保持一致。
Kubernetes控制器的主要作用包括:通过自动化运维机制,自动处理Pod的启动、重启、扩缩容、滚动更新等操作;具备故障自愈能力,当Pod意外终止或节点故障时,控制器会及时创建新Pod进行替换;同时实现状态维持,确保集群在任何时刻的实际状态都严格符合用户通过YAML或kubectl声明的期望目标状态。
2. 什么是ReplicaSet,说明它的主要用途。
ReplicaSet(RS) 是Kubernetes的一个控制器,负责确保指定数量的Pod副本始终在运行。
值得注意的是,我们通常不直接使用ReplicaSet,而是通过Deployment控制器间接使用它,因为Deployment提供了滚动更新、回滚等更高级功能。
ReplicaSet的核心作用包括:通过副本数量维持机制,确保集群中Pod的实际数量始终与用户期望值一致(多于则删除多余Pod,少于则创建新Pod);借助标签选择器精准识别并管理属于自身的Pod;同时保障Pod稳定性,使应用的关键副本数不会因节点故障、人为误删等意外情况而减少。
3.Deployment 控制器是如何工作的,举例说明其常见用途。解释DaemonSet,列举其使用场景。
Deployment通过管理ReplicaSet来实现声明式更新。用户更新Pod模板(如镜像版本)时,Deployment会创建一个新ReplicaSet并逐步增加其副本数,同时减少旧ReplicaSet的副本数,实现滚动更新。如果更新失败,可以回滚到之前的ReplicaSet。
Deployment控制器的常见用途包括:通过滚动更新实现不中断服务的版本升级(如将nginx从1.20更新到1.21);在更新发现问题时支持版本回滚,立即退回到上一个稳定版本;根据流量高峰进行应用扩缩容(如从3个副本扩展到10个);以及支持暂停与恢复更新操作,在灰度发布或金丝雀测试期间暂停更新进程以进行验证。
DaemonSet确保每个节点上运行一个Pod副本。当新节点加入集群时,DaemonSet自动在该节点上创建Pod;节点被移除时,Pod也会被回收。
daemonset可以用于收集日志、监控代理,可以作为网络插件和存储插件以及节点维护工具。
4. 什么是StatefulSet,其主要作用是什么?
StatefulSet 是用于管理有状态应用的工作负载API对象,它管理Pod的部署和扩缩容,并为这些Pod提供持久化标识符和稳定网络标识。
StatefulSet的主要作用是为有状态应用提供稳定的Pod名称(如web-0、web-1按顺序创建且重启后名称不变)、稳定的网络标识(每个Pod拥有唯一DNS名)以及持久化存储(每个Pod绑定自己的PVC,即使被调度到不同节点也能重新挂载存储卷);同时支持有序部署与更新(按索引顺序启动/关闭,更新时可实现滚动更新或通过分区特性进行金丝雀发布),因此典型应用于需要保持身份和存储独立性的场景,如MySQL集群、etcd等数据库、消息队列及分布式协调服务。
5. 说明Job与CronJob的功能。
Job负责运行一次性任务,确保指定数量的Pod成功完成任务并终止。如果Pod失败,Job会根据配置的重试策略重新创建Pod,直到达到成功次数。使用场景有:数据库迁移、批处理计算、数据备份、发送报告邮件。
CronJob周期性地创建Job。例如,每天凌晨3点清理临时文件、每小时同步一次数据、每周生成一次账单。
6.Ingress控制器
Ingress不是一种工作负载控制器,而是一组API资源,管理从集群外部访问服务的HTTP/HTTPS路由规则。它需要配合Ingress Controller(如Nginx Ingress Controller、Traefik、HAProxy等,通常以Deployment或DaemonSet形式部署)来实际执行路由。
Ingress控制器很重要,相比NodePort或LoadBalancer,Ingress能节省公网IP和端,并且提供基于主机名的路由、基于路径的路由以及负载均衡与流量限速、重写规则等高级功能。
更多推荐

所有评论(0)