企业部分实战-- Kubernetes控制器(ReplicaSet 、Deployment 、DaemonSet 、Job 、CronJob)

一、控制器的介绍

Pod 的分类:
• 自主式 Pod:Pod 退出后不会被创建
• 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目

控制器类型:
• Replication Controller和ReplicaSet
• Deployment
• DaemonSet
• StatefulSet
• Job
• CronJob
• HPA全称Horizontal Pod Autoscaler

1.Replication Controller和ReplicaSet
ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet。
ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持新的基于集合的选择器需求。ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行。虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、删除和更新的机制。

2.Deployment
Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。典型的应用场景: 用来创建Pod和ReplicaSet 、滚动更新和回滚、扩容和缩容、暂停与恢复。

3.DaemonSet
DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
DaemonSet 的典型用法:
• 在每个节点上运行集群存储 DaemonSet,例如 glusterd、ceph。
• 在每个节点上运行日志收集 DaemonSet,例如 fluentd、logstash。
• 在每个节点上运行监控 DaemonSet,例如 Prometheus Node Exporter、zabbix agent等
• 一个简单的用法是在所有的节点上都启动一个 DaemonSet,将被作为每种 类型的 daemon 使用。 • 一个稍微复杂的用法是单独对每种 daemon 类型使用多个 DaemonSet, 但具有不同的标志, 并且对不同硬件类型具有不同的内存、CPU 要求。

4.StatefulSet
StatefulSet 是用来管理有状态应用的工作负载 API 对象。实例之间有不对 等关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用”
StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证。
StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:
• 稳定的、唯一的网络标识符。
• 稳定的、持久的存储。
• 有序的、优雅的部署和缩放。
• 有序的、自动的滚动更新。

5.Job
Job执行批处理任务,仅执行一次任务,保证任务的一个或多个Pod成功结束。

6.CronJob
Cron Job 创建基于时间调度的 Jobs。 一个 CronJob 对象就像 crontab (cron table) 文件中的一行,它用 Cron 格式进行编写,并周期性地在给定的调度时间执行 Job。

7.HPA
HPA根据资源利用率自动调整service中Pod数量,实现Pod水平自动缩放。

二、ReplicaSet控制器

vim rs.yml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-example
spec:
  replicas: 4 #修改数字可以进行扩容和缩容
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1

在这里插入图片描述
将此改为replicas: 6进行扩容
在这里插入图片描述

三、deployment控制器

3.1 单个deployment控制器
vim deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 80

在这里插入图片描述
注意:在deployment控制器中,如果删除pod后还会有新的pod的pod,所以如果pod状态不对可以删除进行调整。

3.2 多个deployment控制器

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-v1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-v2
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v2
        ports:
        - containerPort: 80

在这里插入图片描述

删除一个控制器
在这里插入图片描述

四、DaemonSet控制器

DaemonSet控制器可以每个节点部署一个容器
vim daemonset.yml

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


在这里插入图片描述

五、Job控制器

vim job.yml

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

在这里插入图片描述

六、CronJob 控制器

vim cronjob.yml

apiVersion: batch/v1beta1 
kind: CronJob 
metadata:  
  name: cronjob-example 
spec:  
  schedule: "* * * * *"  
  jobTemplate:    
    spec:      
      template:        
        spec:          
          containers:          
          - name: cronjob            
            image: busybox            
            args:            
            - /bin/sh            
            - -c            
            - date; echo Hello from k8s cluster          
          restartPolicy: OnFailure

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值