栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

kubernetes系列六之DaemonSet与Job

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kubernetes系列六之DaemonSet与Job

文章目录
  • DaemonSet
    • Kube-proxy的特殊性
    • DaemonSet的特性
    • 创建DaemonSet
    • DaemonSet查看
  • Job
    • 一次性任务性场景
    • 运行一个Job
    • Job
  • CronJob
    • Schedule参数配置

DaemonSet Kube-proxy的特殊性

在Kubernetes组件章节中,我们介绍了kube-proxy组件,它被封装在pod中,并且时刻运行在每个Node节点中。
Replicaset侧重保证pod数量的恒定,那该如何实现kube-proxy类应用的调度?

NAME                       READY   STATUS         RESTARTS   AGE    IP               NODE     
kube-proxy-5q6mg           1/1     Running        0          125m   192.168.137.21   k8s-master
kube-proxy-8dt55           1/1     Running        0          125m   192.168.137.23   k8s-node2
kube-proxy-m4dx6           1/1     Running        0          125m   192.168.137.22   k8s-node1

DaemonSet的特性

DaemonSet 部署的副本Pod会分布在各个Node上。当有 Node 加入集群时,也会为他们新增一个 Pod。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
DaemonSet典型场景:
在集群的每个节点上运行存储Daemon,如glusterd,ceph。
在每个节点上运行日志收集Daemon,如flunentd或logstash。
在每个节点上运行监控Daemon,如Prometheus Node Exporter。

创建DaemonSet

创建DaemonSet的yaml文件和创建deployment使用的类似。
类型(kind)选择DaemonSet。
DaemonSet的yaml文件不需要副本数量项。
默认情况下,DaemonSet会在所有Node上创建Pod。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx-daemonset
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
       app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
DaemonSet查看

创建完成后,可以在Node1和Node2上分别看到一个pod。

[root@k8s-master runfile]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP            NODE        
nginx-daemonset-ftvj8    1/1     Running   0          84m   10.244.2.13   k8s-node2           nginx-daemonset-r5xfl    1/1     Running   0          84m   10.244.1.10   k8s-node1

如将其中一个pod强制删除,daemonset会自动启动一个新的pod。

nginx-daemonset-ftvj8    1/1     Running   0          88m   10.244.2.13   k8s-node2
nginx-daemonset-vmgkw    1/1     Running   0          7s    10.244.1.12   k8s-node1

当kubernetes集群出现节点故障时,daemonset中的pod数量会减少,不会像deployment一样将受到影响的pod在其他节点启动。

[root@k8s-master runfile]# kubectl get daemonset
NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
nginx-daemonset   1         1         1       1            1                     133m
Job 一次性任务性场景

通过Deployment我们可以部署常驻型应用,它可以保证pod数量保证应用的实时可用,也可以通过灵活的扩缩容让业务处于最佳状态。
通过DaemonSet我们可以部署守护进程,它使得每个node上运行着一个固定pod。

运行一个Job

相对于Deployment和DaemonSet通常提供持续的服务,Job执行一次性任务。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

类型(kind)选择Job。
restartPolicy只能选择Never或OnFailure。
backoffLimit:参数指定job失败后进行重试的次数。

Job

运行job后,查看状态

[root@k8s-master runfile]# kubectl get job
NAME   COMPLETIONS   DURATION   AGE
pi     0/1           5s         5s

过一段时间后继续查看状态,completions状态从“0/1”变为“1/1”,表示任务已经完成。

[root@k8s-master runfile]# kubectl get job
NAME   COMPLETIONS   DURATION   AGE
pi     1/1           18s        56s

查看job使用的pod状态,发现pod已经运行完成并且关闭。

[root@k8s-master runfile]# kubectl get pod
NAME                     READY   STATUS      RESTARTS   AGE
nginx-daemonset-fjz7r    1/1     Running     0          4h23m
pi-nx9m9                 0/1     Completed   0          117s

使用kubectl logs命令可以查看该Job运行结果。

CronJob

在日常应用中,有一种常见场景是需要Job在指定时间或周期运行,这种类型我们称其为Cron Job,主要管理基于时间的Job。
在给定时间点只运行一次
在给定时间点周期性地运行
使用配置文件创建Cron Job。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure
Schedule参数配置

Schedule的格式和linux中crontab命令类似。

 ┌───────────── minute (0 - 59)
 │ ┌───────────── hour (0 - 23)
 │ │ ┌───────────── day of the month (1 - 31)
 │ │ │ ┌───────────── month (1 - 12)
 │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
 │ │ │ │ │                                   7 is also Sunday on some systems)
 │ │ │ │ │
 │ │ │ │ │

每15分钟执行一次任务
*/15 * * * *
每个小时第15分钟
15 * * * *

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号