K8S基础-控制器(Controllers)
控制器-controllers常用控制器DeploymentDaemonSetJobCronJobPod与controllers关系controllers也叫工作负载(workload),在集群上管理和运行容器的对象通过label-selector相关联Pod通过控制器实现应用的运维,如伸缩,滚动,升级等Deployment控制器DaemonSet功能:部署无状态应用管理Pod和ReplicaSe
·
控制器-controllers
常用控制器
- Deployment
- DaemonSet
- Job
- CronJob
Pod与controllers关系
-
controllers
也叫工作负载(workload),在集群上管理和运行容器的对象
-
通过label-selector相关联
-
Pod通过控制器实现应用的运维,如伸缩,滚动,升级等
Deployment控制器
DaemonSet功能:
-
部署无状态应用
-
管理Pod和ReplicaSet
RS作用:- 控制副本数量
- 管理滚动升级
- 发布版本管理
-
具有上线部署,副本设定,滚动升级,回滚等功能
-
提供声明式更新,例如只更新一个Image
应用场景: WEB服务,微服务
部署发布
# 获取web-deploy.yaml文件
kubectl create deployment web --image=nginx:latest --dry-run=client -o yaml > web-deploy.yaml
# 应用web-deploy.yaml
kubectl apply -f web-deploy.yaml
获取service.yaml文件
# 获取web-service.yaml文件
kubectl expose deploy/web --port=80 --type=NodePort --target-port=80 --name=web-service --dry-run=client -o yaml > web-service.yaml
# 应用web-service.yaml
kubectl apply -f web-service.yaml
升级
kubectl set image deploy/web nginx=nginx:1.16 --record=ture
升级时候可加参数–record=ture来记录执行命令
web是deloyment名称,nginx是容器名称
回滚
# 查看历史版本(升级时候可加参数--record=ture来记录执行命令)
kubectl rollout history deploy/web
# 回滚到上一版本
kubectl rollout undo deploy/web
# 回滚到指定版本
kubectl rollout undo deploy/web --to-revision=3
版本1为第一版本,版本最大编号为最新版本
缩容/扩容
kubectl scale deploy/web --replicas=3
DaemonSet控制器
DaemonSet功能:
- 在每一个Node上运行一个Pod
- 新加入的Node也同样会运行一个Pod
应用场景:Agent
DaemonSet.yaml配置文件
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: web-daemonset
name: web-daemonset
spec:
selector:
matchLabels:
app: web-daemonset
template:
metadata:
labels:
app: web-daemonset
spec:
containers:
- image: nginx:latest
name: nginx-daemonset
可以根据deployment的yaml来改,不需要副本数量参数
部署DaemonSet需要考虑污点的情况
# 查看污点配置
kubectl describe node/k8s-master |grep Taint
Job控制器
Job分为普通控制器(Job)和定时任务(Crontab)
一次性任务-Job
应用场景: 离线数据处理,视频解码等业务
获取job.yaml
kubectl create job pi --image=perl --dry-run=client -o yaml > job.yaml
apiVersion: batch/v1
kind: Job
metadata:
creationTimestamp: null
name: pi
spec:
template:
metadata:
creationTimestamp: null
spec:
containers:
- image: perl
name: pi
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
定时任务-CronJob
应用场景: 通知,备份,短信推送等
cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob
spec:
schedule: "*/3 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: cronjob
image: busybox:latest
args:
- /bin/sh
- -c
- echo Hello World
restartPolicy: OnFailure
更多推荐
已为社区贡献11条内容
所有评论(0)