Pod控制器
pod按创建方式分类自主式pod //kubernetes直接创建出来的pod,删除之后不会重启 控制器创建的pod //通过控制器创建的pod,删除之后还会重建
Pod控制器分类ReplicationController //已废弃,由ReplicaSet替代 ReplicaSet //保证指定数量的Pod运行,支持pod数量变更,镜像版本变更 Deployment //控制ReplicaSet来控制Pod,支持滚动升级,版本回退 Horizontal Pod Autoscaler //根据集群负载自动调整Pod数量,实现消峰填谷 DaemonSet //在集群中的指定Node上都运行一个副本,一般用于守护进程类的任务 Job // 创建出来的pod,只有完成任务就立即退出,用于执行一次性任务 Cronjob //创建的pod会周期性的执行,执行周期性任务 StatefulSet //管理由状态应用
ReplicaSet(RS)
保证一定数量的pod能够正常运行,持续监听这些pod的运行状态
pod发生故障,就会重启或重建
支持pod数量的扩缩容和版本镜像的升级 apiVersion: apps/v1 kind: ReplicaSet metadata: name: pc-replicaset namespace: dev labels: controller: rs spec: replicas: 3 selector: matchLabels: app: nginx-pod matchExpressions: - {key:app, operator: In, values: [nginx-pod]} template: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1扩缩容 编辑yaml文件 kubectl edit rs pc-replicaset -n dev 修改spec.replicas的值 命令 kubectl scale rs pc-replicaset --replicas=2 -n dev 镜像升级 编辑yaml文件 kubectl edit rs pc-replicaset -n dev 修改spec.template.container.image的值 命令 kubectl set image rs pc-replicaset nginx=nginx:1.17.2 -n dev 删除ReplicaSet, 先replicas调整为0,删除所有pod后,再删除rs kubectl delete rs pc-replicaset -n dev 仅删除rs对象,不删除pod kubectl delete rs pc-replicaset -n dev --cascade=false 推荐 kubectl delete -f pc-replicaset.yaml
Deployment(Deploy)
解决服务编排的问题,
不直接管理pod,通过管理ReplicaSet来间接管理Pod支持ReplicaSet的所有功能 支持发布的停止和继续 支持版本滚动升级和版本回退apiVersion: apps/v1 kind: Deployment metadata: name: namespace: dev labels: controller: deploy spec: replicas: 3 revisionHistoryLimit: 3 //保留历史版本,默认是10 paused: false //暂停部署,默认是false progressDeadlineSeconds: 600 //部署超时时间,默认600s strategy: type: RollingUpdate //滚动更新 rollingUpdate: maxSurge: 30% //最大额外可以存在的副本数,可以为百分比,整数 maxUnavailable: 30% //最大不可用状态的Pod的最大值,可以为百分比,整数 selector: matchLabels: app: nginx-pod matchExpressions: - {key:app, operator: In, values: [nginx-pod]} template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 //创建deploy kubectl create -f pc-deployment.yaml --record=true kubectl get deploy pc-deployment -n dev kubectl get rs -n dev kubectl get pod -n dev //删除deploy kubectl delete -f pc-deployment.yaml
扩缩容kubectl scale deploy pc-deployment --replicas=5 -n dev kubectl edit deploy pc-deploy -n dev 修改replicas的值 kubectl get deploy pc-deployment -n dev kubectl get pods -n dev
镜像更新
重建更新strategy: type: Recreate //创建新pod,会杀掉已存在的pod 验证 kubectl set image deploy pc-deployment-recreate nginx=nginx:1.17.2 -n dev kubectl get pod -n dev -w
滚动更新(默认)strategy; type: RollingUpdate //滚动更新,删除一部分,重启一部分,新旧共存 RollingUpdate: maxSurge: //在升级过程中可以超过期望的Pod的最大数量 maxUnavailable: //在升级过程中不可用的Pod的最大数量 验证 kubectl set image deploy pc-deployment-recreate nginx=nginx:1.17.2 -n dev kubectl get pod -n dev -w
版本回退更新镜像以后,查看rs,旧的还存在,只是相关pod数量为0,产生新的rs,相关pod数量为3 kubectl get rs -n dev
kubectl rollout 版本升级相关功能kubectl rollout status 显示当前升级状态 history 显示升级历史记录 pause 暂停版本升级过程 resume 继续升级 restart 重启版本升级过程 undo 回滚到上一次版本,(--to-revision回滚到指定版本)kubectl rollout status deploy pc-deployment -n dev kubectl rollout history deploy pc-deployment -n dev //创建的时候需要 --record才能显示 //--to-revision=1 指定回退版本,不设置,返回上一版本 kubectl rollout undo deploy pc-deployment --to-revision=1 -n dev
金丝雀发布//更新deploy的版本,并暂停更新,老的rs-pod依旧存在,并产生一个新的rs-pod,不再发生变化 kubectl set image deploy pc-deployment nginx=nginx:v1.17.4 -n dev && kubectl rollout pause deploy pc-deployment -n dev //查看rs kubectl get rs -n dev //观察更新状态 kubectl rollout status deploy pc-deployment -n dev //没有问题,继续更新 kubectl rollout resume deploy pc-deployment -n dev
Horizontal Pod Autoscaler(HPA)
通过监测Pod的使用情况,实现Pod的自动调整
HPA可以获得Pod的利用率,和HPA中定义的指标对比,同时计算出需要
伸缩的具体值,实现Pod数量的调整。
追踪分析目标Pod的负载变化情况,来决定是否需要针对性的调整Pod
的副本数创建deployment kubectl run pc-deploy-hpa --image=nginx:1.17.1 --requests=cpu=100m -n dev kubectl apply -f pc-deploy-hpa.yaml 暴露service kubectl expose deployment pc-deploy-hpa --type=NodePort --port=80 -n dev kubectl get deploy,pod,svc -n dev kubectl apply -f pc-deploy-hpa.yaml 用postman对节点进行压测,分别打开三个终端,观察pod,hpa,deploy的变化
hpa配置项spec: minReplicas: 1 //最小副本数 maxReplicas: 10 //最大副本数 targetCPUUtilizationPercentage: 3 //cpu的占用率 scaleTargetRef: //设置deployment apiVersion: apps/v1 kind: Deployment name: pc-deploy-hpa
DaemonSet (DS)
保证集群中的每一台节点上都运行一个副本,一般用于日志收集,节点监控
Pod提供的功能每个节点都需要且只需要一个
每当向集群中添加一个节点时,指定的pod副本也将添加到该节点上
当节点从集群中移除时,Pod也就被垃圾回收了apiVersion: apps/v1 kind: DaemonSet metadata: name: //名称 namespace: dev labels: controller: DaemonSet spec: revisionHistoryLimit: 3 //保留历史版本 updateStrategy: type: RollingUpdate //滚动更新 rollingUpdate: maxSurge: 30% //最大额外可以存在的副本数,可以为百分比,整数 maxUnavailable: 30% //最大不可用状态的Pod的最大值,可以为百分比,整数 selector: matchLabels: app: nginx-pod matchExpressions: - {key:app, operator: In, values: [nginx-pod]} template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1
测试kubectl apply -f pc-daemonset.yaml 查看 kubectl get ds pc-daemonset -n dev kubectl get pod -n dev 每个节点都会有一个pod
Job
批量处理短暂的一次性任务
每个任务仅运行一次
Job创建的pod执行成功时,Job将记录成功结束的pod数量
当成功结束的pod达到指定的数量时,Job将完成执行apiVersion: batch/v1 kind: Job metadata: name: //名称 namespace: dev labels: controller: Job spec: completions: //Job需要成功运行pod的数量,默认是1 parallelism: //Job在任一时刻应该并发运行pod的数量,默认是1 activeDeadlineSeconds: //Job可运行的时间期限,超过未结束,系统会终止 backoffLimit:6 //失败尝试次数 manualSelector: true // selector: //选择器,指定该控制器管理哪些pod matchLabels: app: counter-pod matchExpressions: - {key:app, operator: In, values: [counter-pod]} template: //pod模版 metadata: labels: app: counter-pod spec: restartPolicy: //只能设置Never或者OnFailure containers: - name: counter image: busybox:1.30 command: ["bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1]; do echo $i;sleep 3;done"] kubectl apply -f pc-Job.yaml kubectl get job -n dev -w kubectl get pod -n dev -w
CrobJob
定时job
Cronjob通过Job控制器,管理pod
Cronjob可以在特定的时间点反复去运行job任务apiVersion: batch/v1beta1 kind: CronJob metadata: name: //名称 namespace: dev labels: controller: cronjob spec: schedule: //cron格式的任务运行时间点, concurrencyPolicy: //并发执行策略,前一次任务未完成的情况下如何运行后一次任务 //Allow 允许jobs并发运行,默认 //Forbid 禁止并发运行,跳过下次 //Replace 下次替换当前任务 failedJobHistoryLimit: //为失败的任务执行保留的历史记录数,默认1 successfulJobHistoryLimit: //为成功的任务执行保留的历史记录数,默认3 startingDeadlineSeconds: //超时时间 jobTemplate: // Job控制器模板 metadata: spec: completions: //Job需要成功运行pod的数量,默认是1 parallelism: //Job在任一时刻应该并发运行pod的数量,默认是1 activeDeadlineSeconds: //Job可运行的时间期限,超过未结束,系统会终止 backoffLimit:6 //失败尝试次数 manualSelector: true // selector: //选择器,指定该控制器管理哪些pod matchLabels: app: counter-pod matchExpressions: - {key:app, operator: In, values: [counter-pod]} template: //pod模版 metadata: labels: app: counter-pod spec: restartPolicy: //只能设置Never或者OnFailure containers: - name: counter image: busybox:1.30 command: ["bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1]; do echo $i;sleep 3;done"]kubectl apply -f pc-cronjob.yaml kubectl get cronjob -n dev -w kubectl get job -n dev -w kubectl get pod -n dev -w
奋楫海之南扬帆自贸港东方提升城市形象递出靓丽名片奋楫海之南扬帆自贸港海南推进全面深化改革开放和自贸港建设成就巡礼高品位打造滨海城市带节点城市和亮点城市东方提升城市形象递出靓丽名片这里计划建设滨海景观路和带状公园,设计院已经在深化
呼伦贝尔草原,几月出游景色美,价格还便宜?虽然78月才是呼伦贝尔传统的最佳旅游季节,但只要雨水好,草和牛羊都长得又快又肥,我们就可以提前在淡季获得了草原的顶级体验。如果说理想的工作是事少钱多离家近的话,那理想的出游肯定就是
外国人体验中国高铁后,气愤提出3大缺点,国人却表示赞同?文远山编辑多鱼在阅读此文前,诚邀您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。现在绝大多数人都已经习惯了高铁这一新兴公共交通工具的存在,并且在出行
有一种生活叫长沙丨谢子龙影像艺术馆光影和影像艺术的容器每到假期,长沙总是被全国网友力荐成为全国最热门的旅行目的地,除了太平街坡子街的美食,橘子洲岳麓山的美景,随手一拍就出大片的艺术场馆也是长沙不能错过打卡地。在长沙的艺术场馆中,谢子龙
说走就走的旅行说起绍兴你们可能不怎么清楚,但是提到鲁迅就无人不知无人不晓了,首先我就先来班门弄斧一下了,绍兴鲁迅故里位于浙江省绍兴市越城区鲁迅中路241号,是鲁迅诞生和青少年时期生活过的故居,修
乐山犍为半马两选手获冠亚军,领奖4天后成绩取消!组委会两人抢跑4月1日,中国茉莉之乡乐山犍为第三届半程马拉松赛暨跑遍四川乡村系列赛(犍为站)举行。赛后,两名埃塞俄比亚选手分别获得半程马拉松男子组第一二名,并登上了领奖台。红星新闻记者日前从组委
来安分水岭间觅春光来源人民网安徽频道分水岭间觅春光,百花娇羞舞霓裳。春分时节,江淮岭脊线来安红岭段,山峦叠翠蜿蜒曲折,风车摇曳山湖交织,风景绮丽,生态优美,吸引了大量游客前来观光踏青来安红岭段,主线
雪人之谜喜马拉雅山脉中是否存在神秘的雪人?在喜马拉雅山脉,世界上最壮丽的高山脉之一,有着一个神秘的谜团一直悬而未决雪人。数百年来,当地居民一直传承着关于雪人的传说和神话故事,而探险家科学家和普通人们也多次声称在这片遥远的山
中国白酒的两次重大分水岭是什么时候?认知中国白酒的两次重大分水岭。茅台全面超越五粮液,第一款。王岑,中国消费投资领军人专注消费投资20年。应该是在那个阶段开始的。在那之前的很多年,其实五粮液是一直碾压茅台的。王老师您好,
乐山宵夜江湖里的铁签羊肉,有人一吃就是40多年乐山这座老城,在千百年的时光中历久弥新,自成一方味道刘选生烧烤,在40年的时光里,千签挥舞,扬名一方乐土。街巷汇聚,商贩云集的宝马街,矗立着刘选生烧烤的店铺,于此俯瞰乐山味道日新月
四川乐山一餐厅大脚印系1亿年前蜥脚类恐龙所留新民晚报讯(记者姜燕)去年夏天冲上热搜的四川乐山一餐厅惊现恐龙足迹有了后续,4月6日,国际研究团队完成了这批恐龙足迹的初步研究,研究表明地面的凹坑其实是长度约50至60厘米的恐龙足
抵抗鞋史诗级削弱,13位英雄强度调整,大乔回退,铸梦装备大增强文丨王者小辣椒原创这个赛季王者荣耀新增加了两件装备,两件装备的名字还差不多,一件叫做铸梦逐风,另外一件则是叫做铸梦破空,这两件装备在这个赛季出的英雄并不多,逐风还好,有李元芳吕布等
一次性使用内窥镜保护套互联网轻实体创新装备实现智慧生活自主研发新装置一次性使用内窥镜保护套近年来在临床上,由于内窥镜结构的特殊性,在使用后存在交叉感染的风险。本期三创直播室嘉宾史伟明带领团队自主研发的一次性使用内窥镜保护套,保证了内窥
祥龙物流扛起保障重任,助力供应链升级2022冬奥会冬残奥会现场保障。受访者供图2022年中国国际服务贸易交易会拉开序幕,北京祥龙物流(集团)有限公司(下称祥龙物流)将代表交通供应链骨干企业参会。今年是祥龙物流首次参加
看比赛,话成败女排亚洲杯决赛中国队输球有因女排亚洲杯,广大球迷的关注度不亚于世界比赛。大家之所以这样关注此次比赛,关注的是队中各位年轻队员的表现,关注的是中国女排未来的希望。但是本次亚洲杯决赛,中国队以1比3不敌日本,屈居
男篮世预赛中国胜巴林8月29日,中国队主教练杜锋(前)在比赛中为球员喝彩。新华社发(奥斯帕诺夫摄)当日,在哈萨克斯坦努尔苏丹进行的2023年男篮世界杯预选赛第四窗口期比赛中,中国队以80比67击败巴林
作曲家原艺36岁娶44岁的白雪,开豪车住豪宅走上人生巅峰前言白雪是上世纪90年代深受欢迎的女歌手,曾经9次登上央视春晚的舞台,她的很多歌曲,至今仍然被广为传唱,如千古绝唱久别的人太阳月亮你和我离开你并非我愿意每一次幸福大雪无情人有情感恩
看懂了这些,才看懂隐入尘烟凡是有的,还要加给他,叫他有余。没有的,连他所有的,也要夺过来新约马太福音这个夏天,有部电影仅有3000万票房,却被称为今年国产最好的电影,被网友誉为电影版活着。它就是由李睿珺指导
不炒作无绯闻,演50多部戏终于养成剧抛脸,她要火了欢乐颂3新五美中,最令我惊喜的就是饰演朱喆的张佳宁了。在这之前,她曾是温州一家人中的村花,和张译在黄土高原出演了一对土里土气的夫妻。她也是如懿传中高贵的颖妃,一句皇上礼重蒙古,你敢
大S具俊晔一起做财产公证?汪小菲曝离婚原因,老具竟成汪小菲2。0近日,据某媒体爆料,大S和具俊晔已经偷偷做完了婚前财产公证,这说明大S的所有婚前财产都只属于她和孩子,与具俊晔无关。有网友评价说大S虽然是恋爱脑,但在财产方面还是头脑清晰的,做了公
古力娜扎抑郁症?古力娜扎虽然和张天爱在微博联手锤渣男,但还是有一部分网友善于用恶意揣测他人,硬是扒出了古力娜扎大学时代和男友的亲密合照,还说她刚出道为了立人设拒绝拍吻戏,结果和男朋友拍照时热吻。总
王祖蓝一家四口合体首封,妻子长腿抢眼,俩女儿和爸共用一张脸与日常生活当中的着装有所不同,在拍摄时尚大片的时候会追求视觉上的体验,尝试一些新的风格和格调,更加注重所呈现出来的时尚感和造型效果。王祖蓝一家四口合体首封,在着装上就很注重打造氛围