热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kubernetes系列(八)控制器的资源清单定义

1.ReplicaSet1.1ReplicaSet资源清单1.2selector2.Deployment2.1Deployment资源清单2.2其他相关操作2.2.1应用yaml创
  • 1. ReplicaSet
    • 1.1 ReplicaSet资源清单
    • 1.2 selector
  • 2. Deployment
    • 2.1 Deployment资源清单
    • 2.2 其他相关操作
      • 2.2.1 应用yaml创建
      • 2.2.2 扩容
      • 2.2.3 自动扩容
      • 2.2.4 更新容器中的镜像
      • 2.2.5 回滚
      • 2.2.6 使用edit命令编辑Deployment
    • 2.3 deploy保存的rs历史版本数量
  • 3. DaemonSet
    • 3.1 DaemonSet资源清单
    • 3.2 其他相关操作
      • 3.2.1 查看daemonset
  • 4. Job
    • 4.1 Job资源清单
    • 4.2 其他操作
      • 4.2.1 查看job
      • 4.2.2 job出现错误的情况
      • 4.2.3 job成功运行的情况
  • 5. CronJob
    • 5.1 CronJob资源清单
    • 5.2 CronJob Spec
    • 5.3 CronJob的限制

1. ReplicaSet

1.1 ReplicaSet资源清单

apiVersion: extensions/v1beta1
kind: ReplicaSet 
metadata:
  name: rs-test
spec:
  replicas: 3 #有3个副本
  selector: #标签选择器
    matchLabels:
      tier: frontend 
  template: # pod模板
    metadata:
      1abels:
        tier: frontend 
    spec:
      containers:
      - name: toc 
        image: lzw5399/tocgenerator
        env:
        - name: GET_HOSTS_FROM 
          value:dns 
        ports:
        - containerPort: 80

1.2 selector

rs通过selector标签来认定哪些pod是属于它当前的,所以跟下面template的labels必须对应起来

验证步骤

  1. 显示当前pod的labels
kubectl get po --show-labels

可以看到下面被replicaSet托管的pod有label
kubernetes系列(八) - 控制器的资源清单定义
2. 强行修改运行的pod的label

kubectl label pod tocgenerator-6b57695c6f-9nfqc app=eee --override

再次查看pod,发现重新控制器重新创建了一个新的pod
kubernetes系列(八) - 控制器的资源清单定义

2. Deployment

2.1 Deployment资源清单

apiVersion: apps/v1
kind: Deployment 
metadata:
  name: toc-deploy 
spec:
  replicas: 3
  selector: #标签选择器
    matchLabels: # 跟下面的labels必须对应起来
      app: toc 
  template:
    metadata:
      labels: # 跟上面的matchLabels必须对应起来
        app: toc 
    spec:
      containers:   
      - name: toc 
        image: lzw5399/tocgenerator
        ports:
        - containerPort: 80

2.2 其他相关操作

2.2.1 应用yaml创建

# --record参数可以记录命令,我们可以很方便的查看每次 revision 的变化
# 更新的时候可以记录状态,每一步是使用什么命令进行更新的
kubectl apply -f temp.yaml --record 

2.2.2 扩容

kubectl scale deployment toc-deploy --replicas 10 

2.2.3 自动扩容

  • 如果集群支持horizontal pod autoscaling的话,还可以为Deployment设置自动扩展
kubectl autoscale deployment toc-deploy --min=10 --max=15 --cpu-percent=80 

2.2.4 更新容器中的镜像

kubectl set image deployment/toc-deploy tocgenerator=lzw5399/tocgenerator:xxx

2.2.5 回滚

  1. 回滚到上一次
kubectl rollout undo deployment/toc-deploy
  1. 回滚到指定版本
# 这个revision可以通过kubectl rollout history deployment/toc-deploy查找
kubectl rollout undo deployment/toc-deploy --to-revision=2
  1. 查看回滚的状态
kubectl rollout status deployments toc-deploy
  1. 查看可回滚的历史版本
kubectl rollout history deployment toc-deploy 

2.2.6 使用edit命令编辑Deployment

kubectl edit deployment/toc-deploy

2.3 deploy保存的rs历史版本数量

默认保存所有的历史rs,可以通过spec.revisonHistoryLimit来配置

如果将该项设置为0,Deployment 就不允许回退了

3. DaemonSet

3.1 DaemonSet资源清单

apiVersion: apps/v1 
kind: DaemonSet 
metadata:
  name: deamonset-test 
  labels:
    app: daemonset
spec:
  selector:
    matchLabels:
      name: dd 
  template:
    metadata:
      labels: 
        name: dd
    spec: 
      containers:
      - name: daemonset-example 
        image: lzw5399/tocgenerator

3.2 其他相关操作

3.2.1 查看daemonset

kubectl get ds

kubernetes系列(八) - 控制器的资源清单定义

  • 由于daemonset会避开有污点的节点,所以daemonset默认不会往主节点调度pod

  • 下面的截图是去除了master的污点的情况下,daemonset往主节点调度的情形

kubernetes系列(八) - 控制器的资源清单定义

4. Job

4.1 Job资源清单

apiVersion: batch/v1 
kind: Job 
metadata:
  name: pi
spec:
  template:
    metadata:
      name: pi
    spec:
      containers:
      - name: pi 
        image: lzw5399/tocgenerator
        command: ["echo","doneee!!!!"]
      restartPolicy: Never # job的policy建议用Never,不会丢失日志。如果是OnFailure,一旦达到backoffLimit,运行job的容器将被终止。这会使调试job更加困难
  backoffLimit: 4 # 如果job失败,最多的重试次数,默认为6
  activeDeadlineSeconds: 100 # job运行的时间限制,包括失败后启动其他pod继续运行的时间,优先级大于backoffLimit

4.2 其他操作

4.2.1 查看job

kubectl get job

可以看到需要完成次数是1,已完成是0

kubernetes系列(八) - 控制器的资源清单定义

4.2.2 job出现错误的情况

  • 可以看到,由于我们的job有错误无法完成执行,所以k8s会重复地执行该job,知道执行完成或者达到重试次数

默认重试次数是6

kubernetes系列(八) - 控制器的资源清单定义

4.2.3 job成功运行的情况

  • job完成后,不会再创建其他Pod,但是Pod也不会被删除,而是状态变为completed

kubernetes系列(八) - 控制器的资源清单定义

5. CronJob

5.1 CronJob资源清单

apiVersion: batch/v1beta1 
kind: CronJob 
metadata:
  name: he11o 
spec:
  schedule: "*/1 * * * *" # 1分钟执行一次
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: lzw5399/tocgenerator 
            command: # 输出当前时间和hello
            - /bin/sh 
            - -c 
            - date;echo Hello from the Kubernetes cluster 
          restartPolicy: OnFailure

5.2 CronJob Spec

  1. spec.template格式同Pod
  2. RestartPolicy仅支持NeverOnFailure
  3. 单个Pod时,默认Pod成功运行后Job即结束·
  4. spec.completions标志Job结束需要成功运行的Pod个数,默认为1·
  5. spec.parallelism标志并行运行的Pod的个数,默认为1
  6. spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
  7. spec.schedule:调度,必需字段,指定任务运行周期,格式同 Cron·
  8. spec.jobTemplate:Job模板,必需字段,指定需要运行的任务,格式同Job
  9. spec.startingDeadlineSeconds:启动Job的期限(秒级别),该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的。如果没有指定,则没有期限
  10. spec.concurrencyPolicy:并发策略,该字段也是可选的。它指定了如何处理被 Cron Job创建的Job的并发执行。只允许指定下面策略中的一种:
  • Allow(默认):允许并发运行Job
  • Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个
  • Replace:取消当前正在运行的Job,用一个新的来替换

注意,当前策略只能应用于同一个CronJob创建的Job。如果存在多个Cron Job,它们创建的Job之间总是允许并发运行。

  1. spec.suspend:挂起,该字段也是可选的。如果设置为true,后续所有执行都会被挂起。它对已经开始执行的Job不起作用。默认值为false。
  2. spec.successfulJobsHistoryLimitspec.failed]obsHistoryLimit:历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job。默认情况下,它们分别设置为3和1。设置限制的值为1,相关类型的Job完成后将不会被保留。

5.3 CronJob的限制

  1. 创建Job操作应该是幂等的
  2. CronJob并不太好去判断任务是否成功,CronJob通过创建Job去完成任务,Job成功与否可以判断,但CronJob无法链接到Job去获取成功与否,Cron只会定期的去创建Job,仅此而已。

推荐阅读
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • 云原生SRE
    序言年底了,没有分手的朋友的赶紧分了,所谓新年新气象,年年不重样。去留无意,望看风卷残云。。。运维不会消失,但 ... [详细]
  • docker+k8s+git+jenkins
    docker+k8s+git+jenkins,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • LINUX学习之centos7营救模式
    今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
author-avatar
王者灬旋律
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有