第7章:深入理解常用控制器

1. 前言

1.1 Pod与controllers的关系:

  • controllers:在集群上管理和运行容器的对象
  • 通过label-selector相关联
  • Pod通过控制器实现应用的运维,如伸缩,滚动升级等

1.2 Pod存在的意义:

应用亲和性,实现多进程模型

1.3 示意图

在这里插入图片描述

2. Deployment

2.1 deployment功能

  • 部署无状态应用 (不用考虑过多基础环境,如数据存储、网络ID、启动顺序)
  • 管理Pod和ReplicaSet
  • 具有上线部署、副本设定、滚动升级、回滚等功能·
  • 提供声明式更新,例如只更新一个新的Image

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

2.2 deployment yaml文件解析

在这里插入图片描述

2.3

创建

kubectl create deployment web --image=nginx:1.14
kubectl get deploy,pods

发布

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web 
kubectl get service

升级

kubectl set image deployment/web nginx=nginx:1.15
kubectl rollout status deployment/web 

回滚

kubectl rollout history deployment/web 
kubectl rollout undo deployment/web 
kubectl rollout undo deployment/web --revision=2

扩容/缩容

kubectl scale deployment/web  --replicas=3

3. DaemonSet

DaemonSet功能:

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

原理图:
在这里插入图片描述

应用场景: Agent、flannel、监控、日志搜集
yaml文件示例:

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

4. Job

  • 普通任务(Job)

一次性执行

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

yaml文件示例:

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

创建任务

kubectl create -f job.yaml

查看pod

[root@k8s-master ~]# kubectl get pod pi-zr29p 
NAME       READY   STATUS      RESTARTS   AGE
pi-zr29p   0/1     Completed   0          8m6s

查看pod运行结果

[root@k8s-master ~]# kubectl logs pi-zr29p                 
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901

5. CronJob

定时任务,像Linux的Crontab一样

  • 定时任务

应用场景: 通知,备份
yaml文件示例:

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

创建定时任务:

kubectl apply -f crontab.yaml 

查看结果:

[root@k8s-master ~]# kubectl get pods|grep hello
hello-1615891800-f6cxq   0/1     Completed   0          2m29s
hello-1615891860-288zv   0/1     Completed   0          89s
hello-1615891920-ht8l2   0/1     Completed   0          29s
[root@k8s-master ~]# kubectl get cronjobs.batch 
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     0        41s             7m12s

6. 总结

  • Deployment:无状态部署
  • DaemonSet:守护进程部署
  • Job&CronJob:批处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值