k8s控制器
创始人
2024-05-29 18:35:29
0

目录

一、控制器简介

二、控制器类型

1、RC和RS

2、Deployment

3、DaemonSet

4、Job

5、CronJob

6、StateFulSet

7、HPA


一、控制器简介

在kubernetes中,按照Pod的创建方式可以将其分为两类:

  • 自主式:kubernetes直接创建出来的Pod,这种Pod删除后就没有了,也不会重建。
  • 控制器创建pod:通过Pod控制器创建的Pod,这种Pod删除之后还会自动重建。

Pod控制器是管理Pod的中间层,使用了Pod控制器之后,我们只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它就会创建出满足条件的Pod并确保每一个Pod处于用户期望的状态,如果Pod在运行中出现故障,控制器会基于指定的策略重启或重新创建pod。

二、控制器类型

控制器分为以下类型:

  • ReplicationController 和 ReplicaSet
  • Deployment (最常用)
  • DaemonSet
  • StateFulSet
  • Job/CronJob
  • Horizontal Pod Autoscaling

1、RC和RS

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

2、Deployment

提供声明式的定义方法,用来替代RC

  • 定义deployment来创建pod和replicaSet
  • 提供滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续 deployment

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
  • 25%-25%的策略,首先会在新的replicas中新建25%,旧的replicas中删除25%。按照这种规律更新
  • rollover 策略,当还在创建的时候就更新新的版本,deployment会直接干掉之前创建的rs,直接生成新的

5)版本回滚

kubectl rollout undo deployment/myNginx --to-version=2 #回滚操作,设置回退的版本号kubectl rollout status deployment myNginx #查看回滚状态kubectl rollout history deployment/myNginx #查看历史版本信息kubectl rollout pause deployment/myNginx #暂停回滚更新

3、DaemonSet

DaemonSet确保全部node上运行一个pod的副本,新增或删除node时,node上对应的pod也会被新增或删除,删除DaemonSet将删除它创建的pod

  • 运行集群存储daemon,例如在每个node上运行glusterd、ceph
  • 在每个node上运行日志收集daemon、例如logstash、fluentd
  • 在每个node上运行监控daemon、例如Promethenus node exporter

创建使用kubectl create

4、Job

Job负责批处理任务,可以理解为就是用来运行脚本的控制器

  • spec.template格式同pod
  • RestartPolicy仅支持Never或Onfailure
  • 单个Pod时,默认Pod成功运行后Job即结束
  • spec.completions 标志job结束需要成功运行的Pod个数,默认为1
  • spec.parallelism 标志并行运行的Pod的个数,默认为1
  • spec.activeDeadlineSeconds 标志失败Pod的重试最大时间,超过不再重试

例如:创建一个使用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

5、CronJob

在Job的基础上,提供了定时执行,周期执行的方案

  • spec.schedule 运行周期,格式采用Cron
  • spec.jobTemplate Job模板,格式采用Job
  • spec.startingDeadlineSeconds 启动Job的期限,秒
  • spec.concurrencyPolicy 并发策略,因为有可能在第一个job没完成的时候,第二个job又被创建了,就会形成并发
  • Allow 允许
  • Firbid 禁止
  • Replace 取消当前的,用新的替换
  • sper.suspend 挂起
  • spec.successfulJobHistoryLimit和failedJobsHistoryLimit 设置job成功或失败的保留的pod数,默认成功是3个,失败是1个

例子:

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 运行的结果应该是幂等的,就是每次运行的结果应该一样

6、StateFulSet

StateFulSet解决了有状态的服务运行的问题

  • 稳定的持久化存储,即pod重新调度之后依然能访问到相同的持久化数据,基于PVC实现
  • 稳定的网络标志,即pod重新调度之后,podName和HostName不变,基于Headless service实现
  • 有序部署,有序扩展,pod启动是有序的,依据顺序依次进行,只有前一个pod启动成功之后,下面才能继续进行
  • 有序收缩,有序删除,从后往前删除

7、HPA

用于pod的自动扩展,在高峰时扩容,低谷时删除一些资源,提高系统稳定性

相关内容

热门资讯

pc掌机安装安卓系统,PC掌机... 你有没有想过,你的PC掌机也能装上安卓系统,变成一个全能的小神器呢?没错,今天就来给你详细介绍如何让...
苹果11像安卓系统,深度解析安... 你有没有发现,最近苹果11的操作系统越来越像安卓系统了呢?这可不是我随便说说哦,咱们来好好聊聊这个话...
安卓系统支付宝图标,简约而不简... 你有没有发现,手机屏幕上那个小小的支付宝图标,简直就像是个忠诚的小卫士,时刻守护着你的钱包呢?今天,...
梦幻q传没有安卓系统,探索全新... 你有没有听说最近的一款游戏《梦幻q传》?这款游戏可是让不少玩家为之疯狂呢!不过,你知道吗?它竟然没有...
TCL安卓系统电视刷机,解锁更... 亲爱的电视迷们,你是否对家里的TCL安卓系统电视感到有些厌倦,想要给它来个焕然一新的变化呢?那就跟着...
安卓系统后起之秀,揭秘后起之秀... 你知道吗?在手机操作系统这个江湖里,安卓系统可是个后起之秀呢!它就像一位默默无闻的侠客,突然间就闯出...
安卓转换电脑系统,安卓系统在电... 你有没有想过,你的安卓手机里的那些好玩的应用和游戏,能不能直接在电脑上畅玩呢?今天,就让我来带你一探...
安卓系统的爱心教程,轻松实现爱... 亲爱的安卓用户们,是不是觉得手机里的爱心图标有点神秘,不知道怎么设置呢?别急,今天就来给你来一场爱心...
适配苹果系统和安卓系统的手表,... 你有没有发现,最近手腕上的小玩意儿越来越受欢迎了呢?没错,说的就是那些集时尚与科技于一身的手表。今天...
安卓系统占用突然增高,揭秘原因... 最近你的安卓手机是不是突然感觉有点卡呢?是不是觉得内存不够用,打开个应用都要等半天?别急,今天就来给...
安卓系统怎样远程桌面windo... 你有没有想过,在安卓手机上也能轻松操控Windows系统呢?没错,这就是今天我要跟你分享的神奇技巧—...
安卓获取系统设置的铃声,解锁个... 你有没有想过,手机里那些悦耳的铃声,其实都是可以自己挑选的?没错,就是那个安卓系统里隐藏的小秘密!今...
安卓多屏操作系统,多维度交互体... 你有没有发现,最近手机屏幕越来越大,操作起来是不是有点儿手忙脚乱?别急,今天就来给你揭秘一个神奇的东...
安卓系统没有通话界面,探索安卓... 你有没有遇到过这种情况?手机屏幕上明明显示着通话界面,但是当你点进去的时候,却发现什么都没有?没错,...
安卓子系统没反应,安卓子系统故... 手机突然卡壳了,安卓子系统没反应,这可怎么办?别急,让我带你一步步排查,找出问题所在,让你的手机重焕...
安卓系统装树莓派,安卓系统下树... 你有没有想过,把安卓系统装到树莓派上,会是个什么样子呢?想象一个迷你的小树莓派,竟然能运行起我们熟悉...
海信操作系统和安卓,打造智能生... 你知道吗?在智能电视的世界里,操作系统可是个大角色呢!今天,咱们就来聊聊海信的操作系统和安卓,看看它...
召唤抽奖系统1.9安卓pc,惊... 你知道吗?最近网上掀起了一股热潮,那就是召唤抽奖系统1.9安卓PC版。这款游戏可是让不少玩家为之疯狂...
安卓如何导入鸿蒙系统文件,鸿蒙... 你有没有想过,让你的安卓手机也来个华丽变身,体验一下鸿蒙系统的魅力呢?别急,今天就来手把手教你如何导...
安卓系统播放sd卡音乐,轻松播... 你有没有遇到过这种情况:手机里存了满满的音乐,却因为系统的问题无法顺畅播放?别急,今天就来给你详细说...