什么是控制器controller
用来控制pod的状态和行为的功能机。
控制器种类
- ReplicaSet:
- Deployment:
- DaemonSet:
- StateFulet:
- Job/Cronob:
ReplicaSet
- 功能:用来确保容器的副本数维持在用户自定义的副本数,通过容器的标签来控制容器。(就版本的RC不支持使用标签)
Deployment
- 功能:取代了旧版本的RC,提供了声明式的定义功能。
- 工作原理:通过管理RS来实现。
- 应用场景:
- 滚动升级&回滚应用:新建RS,将容器一个一个地转移到新RS下。
- 扩容,缩容。
- 暂停,继续(原理与滚动升级相同)。
Deployment模版
[yiki@ ~] vim deployment.yml
apiVersion: extensions/v1beta1 #版本信息
kind: Deployment
metadata:
name: nginx-deployment #Deployment控制器的名字
spec:
replicas: 2 #预期副本数
template: #副本pod的模版,以下都是pod信息
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
*attention:deployment控制器提供的式声明式语句,所以要用apply来创建。
[yiki@ ~] kubectl apply -f deployment.yml
*attention:扩容,更新副本数,nginx-deployment式deployment控制器的名字。
[yiki@ ~] kubectl scale deployment nginx-deployment --replicas=3
*attention:更新镜像,控制器/控制器名。
[yiki@ ~] kubectl set image deployment/nginx-deployment nginx=nginx:x.x.x
*attention:回滚,回退到更新之前的版本。
[yiki@ ~] kubectl rollout undo deployment/nginx-deployment
*attention:查看更新情况
[yiki@ ~] kubectl rollout status deployment/nginx-deployment
*attention:查看历史版本
[yiki@ ~] kubectl rollout history deployment/nginx-deployment
*attention:回退到指定的版本,--to-version后面的是在history中查询到的版本的序号
[yiki@ ~] kubectl rollout history deployment/nginx-deployment --to-version=1
DaemonSet
- 功能:确保某些node上运行一个pod的副本(例如日志搜集daemon等),新加入集群的node也会自动新增pod,node被移除时,相应的pod也会被回收.
- daemonset不会在主节点上创建pod。
Pod分类
- 自主式Pod:pod推出后不会再被自动创建。
- 控制器管理的Pod:再控制器的生命周期里,始终要维持pod的副本数。
Job
- 功能:负责批处理任务,但只能呢个执行一次。
CronJob
- 功能:管理基于时间的job,可以周期性的在某一时间或时间段执行任务。
- 原理:在特定的时间循环创建Job。
cronjob模版
[yiki@ ~] vim cronjoc.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *" #分时日月周,同crontab
jobTemplate: #必须字段,job的模版
spec:
template: #pod模版
spec:
restartPolicy: OnFailure
containers:
- name: yiki
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from Kubernetes cluster
StateFulet
- 功能:解决有状态服务的问题。
- 特点&应用场景:
–稳定的持久化存储,pod重启调度后还能访问到相同的持久化存储,基于PVC实现。
–稳定的网络标识,pod重启后,不会iu改变hostname和PodName(基于headless service)。
–有序部署,有序扩展:在部署和扩展的时候依据定义的顺序依次进行(基于init cotainer)。
–有序收缩,有序删除:与部署式顺序相反,防止出现报错。
HPA
- 功能:自动扩展,HPA并不是直接的控制器,更像是控制器的辅助,例如:当集群的CPU使用率达到HPA指标时,HPA让控制器自动扩展10个node。