• kubernetes实践之四:深入理解控制器(workload)


    一.Pod与controllers的关系

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

    二.Deployment

    • 部署无状态应用
    • 管理Pod和ReplicaSet
    • 具有上线部署、副本设定、滚动升级、回滚等功能
    • 提供声明式更新,例如只更新一个新的Image

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

    创建Deployment:

    # kubectl apply -f nginx-deployment.yaml

    查看Deployment信息:

    #kubectl get deployments

    上图中涉及到数量解释如下:

    READY:0/3 当前准备好的副本数量0,期望副本数3 (即Deployment里面定义的replicas)

    UP-TO-DATE: 最新版本副本数量,在滚动升级中,有多少副本已经升级成功

    AVAILABLE:当前集群可用的副本数量,及存活的Pod数量

    最终结果如下:

    查看副本数量:

    # kubectl get rs

    查看Deployment控制pod水平拓展过程

    # kubectl describe deployment nginx-deployment

    三.StatefulSet

    • 部署有状态应用
    • 每个节点都有固定身份ID
    • 集群的规模比较固定
    • 如果磁盘损坏,集群内的某个节点无法运行

      应用场景:mysql集群,MongoDB集群,Zookeeper集群

    四.DaemonSet

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

      应用场景:zabbix agent,saltstack agent    

    创建DaemonSet:

    # kubectl apply -f agent.yaml

    查看daemonset信息

    # kubectl get daemonset

    五.Job

    • 普通任务(Job)

    一次性执行

    官方案例:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

        应用场景:离线数据处理

        

    部署perl

    # kubectl apply -f https://k8s.io/examples/controllers/job.yaml

    查看job

    #kubectl get jobs

    查看日志:

    # kubectl logs pi-lzsh6

    六.控制器小结

    • Deployment:无状态部署
    • StatefulSet:有状态部署
    • DaemonSet:守护进程部署
    • Job & CronJob:批处理
  • 相关阅读:
    People Picker 处理过程
    DC与GC的区别
    说明DOS命令格式的语法
    SQL Server Express的Limitation
    关于IE缓存的一些基础
    Content Deployment入门(上)
    Microsoft SQL Server版本号小结
    要研究一下的技术要点
    区分斜杠与反斜杠
    Windows Virtual PC的虚拟机与宿主机共享文件
  • 原文地址:https://www.cnblogs.com/521football/p/10600493.html
Copyright © 2020-2023  润新知