K8s 控制器管理
2026/8/27 21:04:54 网站建设 项目流程

一、控制器介绍

Pod 是最小调度单元,生产环境不直接管理裸 Pod。 控制器(Controller)核心逻辑:调谐循环,不断对比集群实际状态和 yaml 定义的期望状态。Pod 崩溃、节点故障,控制器自动重建 Pod,实现业务自愈。

K8s 常用控制器:Deployment、ReplicaSet、StatefulSet、DaemonSet、Job、CronJob

二、ReplicaSet 副本集

作用:维持指定数量 Pod 副本运行。

Deployment 底层自动创建 ReplicaSet,业务开发几乎不直接写 RS 资源。

apiVersion: apps/v1 kind: ReplicaSet metadata: name: nginx-rs spec: replicas: 3 selector: matchLabels: app: nginx-rs template: metadata: labels: app: nginx-rs spec: containers: - name: nginx image: nginx:1.25
kubectl apply -f rs.yaml kubectl get rs # 手动删除pod,RS会自动新建pod补齐副本数 kubectl delete pod nginx-rs-xxxx

三、Deployment(无状态业务首选)

基于 ReplicaSet 封装,企业最常用控制器。 能力:副本管理、滚动更新、版本回滚、扩容缩容。

apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy spec: replicas: 3 selector: matchLabels: app: nginx-deploy template: metadata: labels: app: nginx-deploy spec: containers: - name: nginx image: nginx:1.24 ports: - containerPort: 80
# 创建 kubectl apply -f deploy.yaml kubectl get deploy kubectl get rs kubectl get pods # 扩容缩容 kubectl scale deployment nginx-deploy --replicas=5 # 滚动更新,修改镜像版本 kubectl set image deployment nginx-deploy nginx=nginx:1.25 kubectl rollout status deployment nginx-deploy # 版本回滚 kubectl rollout history deployment nginx-deploy kubectl rollout undo deployment nginx-deploy kubectl rollout undo deployment nginx-deploy --to-revision=1

四、StatefulSet 有状态控制器

用于有状态应用:Mysql、Redis 集群、etcd。 特点:

  1. Pod 拥有稳定不变主机名
  2. 稳定持久存储,重建 Pod 自动绑定原有 PVC
  3. Pod 有序启动、有序删除
apiVersion: apps/v1 kind: StatefulSet metadata: name: web-sts spec: replicas: 3 selector: matchLabels: app: web-sts serviceName: "web-svc" #必须配置无头Service template: metadata: labels: app: web-sts spec: containers: - name: nginx image: nginx
kubectl apply -f sts.yaml kubectl get sts # pod名称固定 web-sts-0 web-sts-1 web-sts-2

五、DaemonSet 守护集

集群每个节点运行一个 Pod;新增节点自动部署 Pod。 典型场景:日志采集、节点监控、网络插件 calico。

apiVersion: apps/v1 kind: DaemonSet metadata: name: log-ds spec: selector: matchLabels: app: log-agent template: metadata: labels: app: log-agent spec: containers: - name: log image: busybox
kubectl get ds

六、Job 和 CronJob 批处理控制器

Job:一次性任务,保证任务执行成功

apiVersion: batch/v1 kind: Job metadata: name: job-demo spec: template: spec: containers: - name: task image: busybox command: ["echo","一次性批处理任务执行完成"] restartPolicy: Never

CronJob:定时任务,等价 Linux crontab

apiVersion: batch/v1 kind: CronJob metadata: name: cron-demo spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: cron-task image: busybox command: ["echo","定时任务运行"] restartPolicy: OnFailure
kubectl get cronjob kubectl get jobs

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询