一.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:批处理

kubernetes实践之四:深入理解控制器(workload)的更多相关文章

  1. 基于 Kubernetes 实践弹性的 CI/CD 系统

    大家好,我是来自阿里云容器服务团队的华相.首先简单解释一下何为 Kubernetes 来帮助大家理解.Kuberentes 是一个生产可用的容器编排系统.Kuberentes 一方面在集群中把所有 N ...

  2. OpenStack实践系列⑦深入理解neutron和虚拟机

    OpenStack实践系列⑦深入理解neutron和虚拟机 五.深入理解Neutron 5.1 虚拟机网卡和网桥 [root@node1 ~]# ifconfig brq65c11cc3-8e: fl ...

  3. Redis进阶实践之四Redis的基本数据类型(转载4)

    Redis进阶实践之四Redis的基本数据类型 一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软 ...

  4. K8s之实践Pod深入理解

      K8s之实践Pod深入理解 1.同一pod下的nginx+php+mysql nginx+php+mysql.yaml文件 --- apiVersion: v1 kind: Secret meta ...

  5. kubernetes实践之五:深入理解Service及内部DNS搭建

    一.Service存在的意义: 防止Pod失联(服务发现) 定义一组Pod的访问策略(负载均衡) 支持ClusterIP,NodePort以及LoadBalancer三种类型 Service的底层实现 ...

  6. kubernetes实践之三:深入理解Pod对象

    一.Pod定义 最小部署单元 一组容器集合 一个pod中的容器共享网络命名空间 Pod是短暂的 二.Pod容器分类 基础容器 维护整个Pod的网络命名空间 初始化容器 先于业务容器开始执行,在应用启动 ...

  7. kubernetes学习控制器之StatefulSet控制器

    StatefulSet介绍 一.StatefulSet概述 StatefulSet是用来管理stateful(有状态)应用的StatefulSet管理Pod时,确保Pod有一个按序增长的ID与Depl ...

  8. 实践中总结——理解haslayout和BFC

    1.HASLAYOUT 首先,haslayout翻译成中文就是:有布局. 所谓布局,指的是一个元素可以对本身和里边的元素进行尺寸计算和定位.这里只是谈IE6/7,据说微软之所以不是对所有元素默认有布局 ...

  9. kubernetes port nodePort targetPort 理解

    port The port that the service is exposed on the service's cluster ip (virsual ip). Port is the serv ...

随机推荐

  1. HTML语义化基础

    body { background-color: rgb(60,60,60) } 为使页面呈现较好的内容结构,所以对网页进行布局时,将页面相关元素集中在一起,形成页眉.文章.页脚.侧边栏等元素块,刚开 ...

  2. HTML结构及基础语法

    一.HTML结构 <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...

  3. Vue 实现网易云音乐 WebApp

  4. Java 开发环境配置

    window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloa ...

  5. QT5:C++实现基于multimedia的音乐播放器(二)

    今天接着上一篇来实现播放器的槽函数. 先来实现播放模式,槽函数如下: //播放模式 void Music::musicPlayPattern() { //z=++z%3; ) { //顺序播放 pla ...

  6. Mysql 30条军规

    一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省 ...

  7. python 零基础学习之路 02-python入门

    不知不觉学习python已经两个月了,从一开始不知道如何对print的格式化,到现在可以手撸orm,这期间真的是 一个神奇的过程.为了巩固自己的基础知识,为后面的拓展埋下更好的伏笔,此文当以导师的博客 ...

  8. Ames房价预测特征工程

    最近学人工智能,讲到了Kaggle上的一个竞赛任务,Ames房价预测.本文将描述一下数据预处理和特征工程所进行的操作,具体代码Click Me. 原始数据集共有特征81个,数值型特征38个,非数值型特 ...

  9. 【基于url权限管理 shiro(一)】--基础

    只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源.权限管理包括用户认证和授权两部分.   用户认证 1.概 ...

  10. 部署点评Cat监控项目

    在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat,总会遇到各种问题,讲解的也不够简明清楚,现在用一个单机来部署运行cat监控项目. 首先,到项目的Gi ...