控制器-controllers

常用控制器

  • Deployment
  • DaemonSet
  • Job
  • CronJob

Pod与controllers关系

  • controllers

    也叫工作负载(workload),在集群上管理和运行容器的对象

  • 通过label-selector相关联

  • Pod通过控制器实现应用的运维,如伸缩,滚动,升级等

Deployment控制器

DaemonSet功能:

  • 部署无状态应用

  • 管理Pod和ReplicaSet
    RS作用:

    1. 控制副本数量
    2. 管理滚动升级
    3. 发布版本管理
  • 具有上线部署,副本设定,滚动升级,回滚等功能

  • 提供声明式更新,例如只更新一个Image

应用场景: WEB服务,微服务

在这里插入图片描述

部署发布

# 获取web-deploy.yaml文件
kubectl create deployment web --image=nginx:latest --dry-run=client -o yaml > web-deploy.yaml
# 应用web-deploy.yaml
kubectl apply -f web-deploy.yaml

获取service.yaml文件

# 获取web-service.yaml文件
kubectl expose deploy/web --port=80 --type=NodePort --target-port=80 --name=web-service --dry-run=client -o yaml > web-service.yaml
# 应用web-service.yaml
kubectl apply -f web-service.yaml

升级

kubectl set image deploy/web nginx=nginx:1.16 --record=ture

升级时候可加参数–record=ture来记录执行命令

web是deloyment名称,nginx是容器名称

回滚

# 查看历史版本(升级时候可加参数--record=ture来记录执行命令)
kubectl rollout history deploy/web
# 回滚到上一版本
kubectl rollout undo deploy/web
# 回滚到指定版本
kubectl rollout undo deploy/web --to-revision=3

版本1为第一版本,版本最大编号为最新版本

缩容/扩容

kubectl scale deploy/web --replicas=3

DaemonSet控制器

DaemonSet功能:

  • 在每一个Node上运行一个Pod
  • 新加入的Node也同样会运行一个Pod

应用场景:Agent

DaemonSet.yaml配置文件

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: web-daemonset
  name: web-daemonset
spec:
  selector:
    matchLabels:
      app: web-daemonset
  template:
    metadata:
      labels:
        app: web-daemonset
    spec:
      containers:
      - image: nginx:latest
        name: nginx-daemonset

可以根据deployment的yaml来改,不需要副本数量参数

部署DaemonSet需要考虑污点的情况

# 查看污点配置
kubectl describe node/k8s-master |grep Taint

Job控制器

Job分为普通控制器(Job)和定时任务(Crontab)

一次性任务-Job

应用场景: 离线数据处理,视频解码等业务

获取job.yaml

kubectl create job pi --image=perl --dry-run=client -o yaml > job.yaml
apiVersion: batch/v1
kind: Job
metadata:
  creationTimestamp: null
  name: pi
spec:
  template:
    metadata:
      creationTimestamp: null
    spec:
      containers:
      - image: perl
        name: pi
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

定时任务-CronJob

应用场景: 通知,备份,短信推送等

cronjob.yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob
spec:
  schedule: "*/3 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cronjob
            image: busybox:latest
            args:
            - /bin/sh
            - -c
            - echo Hello World
          restartPolicy: OnFailure
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐