kubernetes(九) kubernetes控制器
时间:2022-07-25
本文章向大家介绍kubernetes(九) kubernetes控制器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
kubernetes控制器
kubernetes部署应用的流程
pod和controller控制器的关系
- controllers: 在集群上管理和运行容器的对象
- pod和controller通过label-selector关联
- Pod通过控制器实现应用的运维,例如伸缩,升级等
deployment 控制器
- 功能:
- 用于部署无状态应用
- 管理POD和Replicaset
- 具有上线部署,副本设定,滚动升级,回滚等功能
- 提供声明式更新
- 应用场景: Web服务,微服务,API
deployment控制器的定义
kubectl explain deployment.spec
$ vim deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
namespace: prod
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.18-alpine
ports:
- containerPort: 80
$ kubectl apply -f deployment.yml
$ kubectl get deploy -n prod -o wide
被控制对象是放在template下的containers
通过命令行操作deployment
- 部署应用
$ kubectl create deployment web --image=nginx:1.14
$ kubectl get deploy,pods
- 暴露应用
$ kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web
$ kubectl get svc,deploy,pod
- 应用升级
$ kubectl set image deploy/web nginx=nginx:1.15
$ kubectl rollout status deploy/web #查看升级状态
- 应用回滚
$ kubectl rollout history deploy/web #查看版本
$ kubectl rollout undo deploy/web #回滚到上一个版本
$ kubectl rollout undo deploy/web --to-revision=1 #回到指定版本
- 扩缩容
$ kubectl scale deployment web --replicas=10 #扩容
$ kubectl scale deployment web --replicas=1 #缩容
daemonSet
- 功能
- 在每一个node上运行一个POD
- 新加入的node也会自动运行一个POD
- 引用场景: Agent
Job
- 分类
- 普通Job
- 定时任务
- 特点: 一次性执行
- 应用场景: 离线数据处理,视频解码业务
$ cat job.yml
apiVersion: batch/v1
kind: Job
metadata:
name: pi
namespace: prod
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl","-Mbignum=bpi","-wle","print bpi(20000)"]
restartPolicy: Never
backoffLimit: 4
$ kubectl get pod -n prod
$ kubectl get job -n prod
$ kubectl logs -f pi-rjdhm -n prod
CronJob
- 定时任务,类似于linux的crontab
- 用用场景: 通知任务,备份任务
$ vim cronjob.yml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cron
namespace: prod
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date;echo hello from the kubernetes cluster
restartPolicy: OnFailure
$ kubectl get cronjob -n prod
$ kubectl logs -f cron-1595347620-nptsf -n prod
- 【自然框架】之数据访问 —— 再小的类库也需要设计。
- 【自然框架】之表单控件(一)实体类(Class)VS 字典(Dictionary)
- 跨平台后门Mokes现已加入OS X豪华午餐
- 【问底】严澜:数据挖掘入门——分词
- 机器学习-简单线性回归教程
- NSA(美国国安局)泄漏Exploit分析
- 详解Windows Shim的攻防利用
- 基于Github的源码白盒扫描工具Raptor
- 把业务逻辑变成数据结构和SQL语句的例子。自然架构改成自然框架
- 【自然框架】之通用权限(六):权限到节点
- 【自然框架】之“元数据”的威力
- 周末娱乐:讲真,这才是我所说黑客的定义!
- 数据访问函数库的使用方法(一)——添加修改数据
- 数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python自学成才之路 多线程开发
- Mysql为什么会抖一下呢
- Python自学成才之路 线程间协作 lock,condition,event的使用
- Java 语言基础 (初识Java语言, 变量和数据类型, 运算符, 流程控制语句, 数组)
- python自学成才之路 线程间协作之Semaphore,threading.local()
- jenkins基础
- Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)
- 安防视频监控系统视频上云解决方案EasyCVR集成海康EHome私有协议系列:设备录像流数据进行PS包分割
- Java 语言基础 (常用类的概述和使用, String 类的概述和使用, 可变字符串类和日期相关类, 集合类库)
- 盘一盘 Python 特别篇 22 - 分箱之 cut
- 数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)
- Python爬虫之requests模块了解
- Python爬虫之数据提取概述
- Python爬虫之数据提取-jsonpath模块
- 什么是高斯混合模型