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

- 定时任务(CronJob)
像Linux的Crontab一样
官方案例:https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/
应用场景:通知,备份

部署CronJob:
# kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml
查看pod
# kubectl get pods

查看日志:

六.控制器小结
- Deployment:无状态部署
- StatefulSet:有状态部署
- DaemonSet:守护进程部署
- Job & CronJob:批处理
kubernetes实践之四:深入理解控制器(workload)的更多相关文章
- 基于 Kubernetes 实践弹性的 CI/CD 系统
大家好,我是来自阿里云容器服务团队的华相.首先简单解释一下何为 Kubernetes 来帮助大家理解.Kuberentes 是一个生产可用的容器编排系统.Kuberentes 一方面在集群中把所有 N ...
- OpenStack实践系列⑦深入理解neutron和虚拟机
OpenStack实践系列⑦深入理解neutron和虚拟机 五.深入理解Neutron 5.1 虚拟机网卡和网桥 [root@node1 ~]# ifconfig brq65c11cc3-8e: fl ...
- Redis进阶实践之四Redis的基本数据类型(转载4)
Redis进阶实践之四Redis的基本数据类型 一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软 ...
- K8s之实践Pod深入理解
K8s之实践Pod深入理解 1.同一pod下的nginx+php+mysql nginx+php+mysql.yaml文件 --- apiVersion: v1 kind: Secret meta ...
- kubernetes实践之五:深入理解Service及内部DNS搭建
一.Service存在的意义: 防止Pod失联(服务发现) 定义一组Pod的访问策略(负载均衡) 支持ClusterIP,NodePort以及LoadBalancer三种类型 Service的底层实现 ...
- kubernetes实践之三:深入理解Pod对象
一.Pod定义 最小部署单元 一组容器集合 一个pod中的容器共享网络命名空间 Pod是短暂的 二.Pod容器分类 基础容器 维护整个Pod的网络命名空间 初始化容器 先于业务容器开始执行,在应用启动 ...
- kubernetes学习控制器之StatefulSet控制器
StatefulSet介绍 一.StatefulSet概述 StatefulSet是用来管理stateful(有状态)应用的StatefulSet管理Pod时,确保Pod有一个按序增长的ID与Depl ...
- 实践中总结——理解haslayout和BFC
1.HASLAYOUT 首先,haslayout翻译成中文就是:有布局. 所谓布局,指的是一个元素可以对本身和里边的元素进行尺寸计算和定位.这里只是谈IE6/7,据说微软之所以不是对所有元素默认有布局 ...
- kubernetes port nodePort targetPort 理解
port The port that the service is exposed on the service's cluster ip (virsual ip). Port is the serv ...
随机推荐
- 第一章 初识数据库Mysql
初识数据库Mysql(my) 在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...
- 第二章之S5PV210在BL1中点亮LED灯
1,u-boot中第一个入口在./arch/arm/cpu/armv7/start.S 翻到153行:如下图 前面都是进行一些基本设置,不用管. cpu_init_cp15设置协处理器, cpu_in ...
- C Primer Plus 第6章 C控制语句:循环 编程练习
记录下写的最后几题. 14. #include <stdio.h> int main() { double value[8]; double value2[8]; int index; f ...
- 【转】利用 three.js 开发微信小游戏的尝试
前言 这是一次利用 three.js 开发微信小游戏的尝试,并不能算作是教程,只能算是一篇笔记吧. 微信 WeChat 6.6.1 开始引入了微信小游戏,初期上线了一批质量相当不错的小游戏.我在查阅各 ...
- SpringMVC中的异常处理
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1. 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeExc ...
- 爬虫-Python爬虫常用库
一.常用库 1.requests 做请求的时候用到. requests.get("url") 2.selenium 自动化会用到. 3.lxml 4.beautifulsoup 5 ...
- Spring Cloud分布式微服务系统中利用redssion实现分布式锁
在非分布式系统中要实现锁的机制很简单,利用java.util.concurrent.locks包下的Lock和关键字synchronized都可以实现.但是在分布式系统中,如何实现各个单独的微服务需要 ...
- Azure Go Management SDK 中国版使用示例
简介 刚学习go几天,尝试调用Azure的SDK进行管理API的操作,基本思路是基于注册的AD Application信息生成token,然后再使用Token生成serviceClient,然后再进行 ...
- 一种转换Ipv6地址的方法
原CSDN博客不再更新维护. 本文介绍了一种将char* 类型的Ipv6地址转换成BYTE(unsigned char)或者in6_addr类型的方法. 说明:使用时需要下载Ipv6++.lib和Ip ...
- Hot swapping
83. Hot swapping83.1 Reload static contentThere are several options for hot reloading. The recommend ...