目录
一、控制器简介
二、控制器类型
1、RC和RS
2、Deployment
3、DaemonSet
4、Job
5、CronJob
6、StateFulSet
7、HPA
在kubernetes中,按照Pod的创建方式可以将其分为两类:
Pod控制器是管理Pod的中间层,使用了Pod控制器之后,我们只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它就会创建出满足条件的Pod并确保每一个Pod处于用户期望的状态,如果Pod在运行中出现故障,控制器会基于指定的策略重启或重新创建pod。
控制器分为以下类型:
RC目前不太采用,都采用RS方式。
RC用来控制pod维持一个正常稳定的数量
RS支持集合式的selector,可以根据标签匹配
样例:
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: myRS
spec:selector:matchLabels:auth: myAuthreplicas: 3template:metadata:labels:auth: myAuthspec:containers:- name: myAuthimage: icepear/dendalion-auth:2.0.0imagePullPolicy: IfNotPresentports:- containerPort: 8080
提供声明式的定义方法,用来替代RC
deployment跟replicaSet以及pod的关系
声明式的创建建议要用kubectl apply····,不要使用kubectl create··· --record参数可以记录命令,可以方便查看每次reversion的变化
1)部署简单的应用
比如我要开启三个 Nginx 的pod 应用
样例:
apiVersion: apps/v1
kind: Deployment
metadata:name: myNginxlabels:app: myNginx
spec:replicas: 3template:metadata:name: myNginxlabels:app: myNginxspec:containers:- name: myNginximage: nginx:1.7.9imagePullPolicy: IfNotPresentrestartPolicy: Alwaysselector:matchLabels:app: myNginx
2)扩容
样例:
kubectl scale deployment myNginx --replicas=10
3)高可用扩容
集群如果支持HPA,还可以设置条件,当cpu到达某种程度,开启多少个,最低开启多少个
kubecl autoscale deployment myNginx --min=10 --max=15 --cpu-percent=80
4)更新镜像
kubectl set image deployment/myNginx nginx:1.8.0
5)版本回滚
kubectl rollout undo deployment/myNginx --to-version=2 #回滚操作,设置回退的版本号kubectl rollout status deployment myNginx #查看回滚状态kubectl rollout history deployment/myNginx #查看历史版本信息kubectl rollout pause deployment/myNginx #暂停回滚更新
DaemonSet确保全部node上运行一个pod的副本,新增或删除node时,node上对应的pod也会被新增或删除,删除DaemonSet将删除它创建的pod
创建使用kubectl create
Job负责批处理任务,可以理解为就是用来运行脚本的控制器
例如:创建一个使用perl语言,计算圆周率打印2000位
apiVersion: batch/v1
kind: Job
metadata:name: pi
spec:template:metadata:name: pispec:containers:- name: piimage: perlcommand: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]restartPolicy: Never
在Job的基础上,提供了定时执行,周期执行的方案
例子:
apiVersion: batch/v1
kind: CronJob
metadata:name: myCronjob
spec:schedule: "*/1 * * * *"jobTemplate:spec:template:spec:containers:- name: myCronjobimage: busyboxargs:- /bin/sh- -c- date; echo Hello k8srestartPolicy: OnFailure
CronJob 运行的结果应该是幂等的,就是每次运行的结果应该一样
StateFulSet解决了有状态的服务运行的问题
用于pod的自动扩展,在高峰时扩容,低谷时删除一些资源,提高系统稳定性
上一篇:内存泄漏分析及规避方法