ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

K8s 控制器管理

K8s 控制器管理 一、控制器介绍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.25kubectl apply -f rs.yaml kubectl get rs # 手动删除podRS会自动新建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 --replicas5 # 滚动更新修改镜像版本 kubectl set image deployment nginx-deploy nginxnginx: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-revision1四、StatefulSet 有状态控制器用于有状态应用Mysql、Redis 集群、etcd。 特点Pod 拥有稳定不变主机名稳定持久存储重建 Pod 自动绑定原有 PVCPod 有序启动、有序删除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: nginxkubectl 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: busyboxkubectl 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: NeverCronJob定时任务等价 Linux crontabapiVersion: batch/v1 kind: CronJob metadata: name: cron-demo spec: schedule: */1 * * * * jobTemplate: spec: template: spec: containers: - name: cron-task image: busybox command: [echo,定时任务运行] restartPolicy: OnFailurekubectl get cronjob kubectl get jobs
返回列表