您的位置 首页 > 德语词汇

deploy是什麼意思?pod控制器-deploy

老铁们,大家好,相信还有很多朋友对于deploy是什麼意思和pod控制器-deploy的相关问题不太懂,没关系,今天就由我来为大家分享分享deploy是什麼意思以及pod控制器-deploy的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

deployment跟别的控制器不一样的是,deployment通过管理replicaset,来管理pod,deloyment比replicaset的功能更加强大,理所应当的给划归重点

deploy是什麼意思?pod控制器-deploy

deploy的资源清单文件大概看一下以备不时之需

apiVersion:apps/v1#版本号\nkind:Deployment#类型\nmetadata:#元数据\nname:#rs名称\nnamespace:#所属命名空间\nlabels:#标签\ncontroller:deploy\nspec:#详情描述\nreplicas:3#副本数量\nrevisionHistoryLimit:3#保留历史版本\npaused:false#暂停部署,默认是false\nprogressDeadlineSeconds:600#部署超时时间(s),默认是600\nstrategy:#策略\ntype:RollingUpdate#滚动更新策略\nrollingUpdate:#滚动更新\nmaxSurge:30%#最大额外可以存在的副本数,可以为百分比,也可以为整数\nmaxUnavailable:30%#最大不可用状态的Pod的最大值,可以为百分比,也可以为整数\nselector:#选择器,通过它指定该控制器管理哪些pod\nmatchLabels:#Labels匹配规则\napp:nginx-pod\nmatchExpressions:#Expressions匹配规则\n-{key:app,operator:In,values:[nginx-pod]}\ntemplate:#模板,当副本数量不足时,会根据下面的模板创建pod副本\nmetadata:\nlabels:\napp:nginx-pod\nspec:\ncontainers:\n-name:nginx\nimage:nginx:1.17.1\nports:\n-containerPort:80

我们创建yaml看看

vipc-deployment.yaml\n\napiVersion:apps/v1\nkind:Deployment\nmetadata:\nname:pc-deployment\nnamespace:dev\nspec:\nreplicas:3\nselector:\nmatchLabels:\nrun:nginx-pod\ntemplate:\nmetadata:\nlabels:\nrun:nginx-pod\nspec:\ncontainers:\n-name:nginx\nimage:nginx:1.17.1

上节的pod创建以后是挂起状态我刚刚解决了,重启治百病,我重启了一下系统,又启动了一下minikube现在终于是可以正常创建pod了

[qq@k8snode1~]$kubectlgetpod,deploy-ndev\nNAMEREADYSTATUSRESTARTSAGE\npod/nginx-64b7c758f4-c4mfv1/1Running04m14s\npod/nginx-64b7c758f4-khpp51/1Running04m14s\npod/nginx-64b7c758f4-rdk7w1/1Running04m14s\npod/pc-deployment-774fccff58-lf5q21/1Running02m12s\npod/pc-deployment-774fccff58-sm28t1/1Running02m12s\npod/pc-deployment-774fccff58-xxh4v1/1Running02m12s\n\nNAMEREADYUP-TO-DATEAVAILABLEAGE\ndeployment.apps/nginx3/3334m14s\ndeployment.apps/pc-deployment3/3332m12s\n

我们就继续了乌拉乌拉

我之前说过了,deploy通过管理rs来管理pod\n下面我们就可以看我创建的deploy创建的rs和pod了\n[qq@k8snode1~]$kubectlgetpod,deploy,rs-ndev\nNAMEREADYSTATUSRESTARTSAGE\npod/pc-deployment-774fccff58-lf5q21/1Running010m\npod/pc-deployment-774fccff58-sm28t1/1Running010m\npod/pc-deployment-774fccff58-xxh4v1/1Running010m\n\nNAMEREADYUP-TO-DATEAVAILABLEAGE\ndeployment.apps/pc-deployment3/33310m\n\nNAMEDESIREDCURRENTREADYAGE\nreplicaset.apps/pc-deployment-774fccff5833310m\n

教材上说的用命令手动添加pod\n[root@k8s-master01~]#kubectlscaledeploypc-deployment--replicas=5-ndev\ndeployment.apps/pc-deploymentscaled\n\n\n为啥啊,我直接改文件不香吗,说实话我可能写出来有点困难,看懂还是比较简单的吧\n[qq@k8snode1~]$kubectleditdeploypc-deployment-ndev\ndeployment.apps/pc-deploymentedited\n------replicas:6副本数量改了个6,有啥难的\n[qq@k8snode1~]$kubectlgetpod,deploy,rs-ndev\n#可以看到加了3个pod,其他的基本没变\nNAMEREADYSTATUSRESTARTSAGE\npod/pc-deployment-774fccff58-bb7zx1/1Running04m34s\npod/pc-deployment-774fccff58-j2m6w1/1Running04m34s\npod/pc-deployment-774fccff58-lf5q21/1Running022m\npod/pc-deployment-774fccff58-sm28t1/1Running022m\npod/pc-deployment-774fccff58-xxh4v1/1Running022m\npod/pc-deployment-774fccff58-zfkkm1/1Running04m34s\n\nNAMEREADYUP-TO-DATEAVAILABLEAGE\ndeployment.apps/pc-deployment6/66622m\n\nNAMEDESIREDCURRENTREADYAGE\nreplicaset.apps/pc-deployment-774fccff5866622m

镜像更新

[qq@k8snode1~]$kubectlgetpod-ndev-w\n#首先认识一下持续更新的命令,实乃神器啊,认识一下\nNAMEREADYSTATUSRESTARTSAGE\npc-deployment-774fccff58-bb7zx1/1Running09m48s\npc-deployment-774fccff58-j2m6w1/1Running09m48s\npc-deployment-774fccff58-lf5q21/1Running027m\npc-deployment-774fccff58-sm28t1/1Running027m\npc-deployment-774fccff58-xxh4v1/1Running027m\npc-deployment-774fccff58-zfkkm1/1Running09m48s

deployment支持两种更新策略:重建更新和滚动更新,可以通过strategy指定策略类型,支持两个属性:

strategy:指定新的Pod替换旧的Pod的策略,支持两个属性:type:指定策略类型,支持两种策略Recreate:在创建出新的Pod之前会先杀掉所有已存在的PodRollingUpdate:滚动更新,就是杀死一部分,就启动一部分,在更新过程中,存在两个版本PodrollingUpdate:当type为RollingUpdate时生效,用于为RollingUpdate设置参数,支持两个属性:maxUnavailable:用来指定在升级过程中不可用Pod的最大数量,默认为25%。maxSurge:用来指定在升级过程中可以超过期望的Pod的最大数量,默认为25%。

编辑pc-deployment.yaml,在spec节点下添加更新策略

spec:\nstrategy:#策略\ntype:Recreate#重建更新

删除掉deploy刚好,我们看一下删除的时候pod的状态,注意,此处开了两个终端

一个终端执行命令,一个终端查看状态\nkubectlgetpod-ndev-w\n

[qq@k8snode1~]$kubectldeletedeploypc-deployment-ndev\ndeployment.apps"pc-deployment"deleted\n#这边一个删除命令\n另一边就有反应了\n[qq@k8snode1~]$kubectlgetpod-ndev-w\nNAMEREADYSTATUSRESTARTSAGE\npc-deployment-774fccff58-bb7zx1/1Running09m48s\npc-deployment-774fccff58-j2m6w1/1Running09m48s\npc-deployment-774fccff58-lf5q21/1Running027m\npc-deployment-774fccff58-sm28t1/1Running027m\npc-deployment-774fccff58-xxh4v1/1Running027m\npc-deployment-774fccff58-zfkkm1/1Running09m48s\npc-deployment-774fccff58-sm28t1/1Terminating032m\npc-deployment-774fccff58-xxh4v1/1Terminating032m\npc-deployment-774fccff58-j2m6w1/1Terminating014m\npc-deployment-774fccff58-zfkkm1/1Terminating014m\npc-deployment-774fccff58-bb7zx1/1Terminating014m\npc-deployment-774fccff58-lf5q21/1Terminating032m\npc-deployment-774fccff58-lf5q20/1Terminating032m\npc-deployment-774fccff58-lf5q20/1Terminating032m\npc-deployment-774fccff58-lf5q20/1Terminating032m\npc-deployment-774fccff58-j2m6w0/1Terminating014m\npc-deployment-774fccff58-j2m6w0/1Terminating014m\npc-deployment-774fccff58-j2m6w0/1Terminating014m\npc-deployment-774fccff58-bb7zx0/1Terminating014m\npc-deployment-774fccff58-bb7zx0/1Terminating014m\npc-deployment-774fccff58-bb7zx0/1Terminating014m\npc-deployment-774fccff58-xxh4v0/1Terminating032m\npc-deployment-774fccff58-xxh4v0/1Terminating032m\npc-deployment-774fccff58-xxh4v0/1Terminating032m\npc-deployment-774fccff58-zfkkm0/1Terminating014m\npc-deployment-774fccff58-zfkkm0/1Terminating014m\npc-deployment-774fccff58-zfkkm0/1Terminating014m\npc-deployment-774fccff58-sm28t0/1Terminating032m\npc-deployment-774fccff58-sm28t0/1Terminating032m\npc-deployment-774fccff58-sm28t0/1Terminating032m\n#这个自己看一下就好

我们继续改文件

把这一段粘贴到这里来\n\nnamespace:dev\nspec:\nstrategy:#策略\ntype:Recreate#重建更新\nreplicas:3\nselector:\n

[qq@k8snode1~]$kubectlapply-fpc-deployment.yaml\ndeployment.apps/pc-deploymentcreated\n看看状态pod从挂起,到容器创建,到运行\npc-deployment-774fccff58-npx7s0/1Pending00s\npc-deployment-774fccff58-npx7s0/1Pending00s\npc-deployment-774fccff58-wgdpd0/1Pending01s\npc-deployment-774fccff58-lnfr60/1Pending01s\npc-deployment-774fccff58-wgdpd0/1Pending01s\npc-deployment-774fccff58-lnfr60/1Pending01s\npc-deployment-774fccff58-npx7s0/1ContainerCreating01s\npc-deployment-774fccff58-wgdpd0/1ContainerCreating01s\npc-deployment-774fccff58-lnfr60/1ContainerCreating01s\npc-deployment-774fccff58-npx7s1/1Running04s\npc-deployment-774fccff58-wgdpd1/1Running04s\npc-deployment-774fccff58-lnfr61/1Running04s\n

[qq@k8snode1~]$kubectleditdeploypc-deployment-ndev\ndeployment.apps/pc-deploymentedited\n我把版本号改成了1.17.1\n\n看状态\npc-deployment-774fccff58-lnfr61/1Running04s\n\npc-deployment-774fccff58-lnfr61/1Terminating04m44s\npc-deployment-774fccff58-npx7s1/1Terminating04m44s\npc-deployment-774fccff58-wgdpd1/1Terminating04m44s\n\npc-deployment-774fccff58-wgdpd0/1Terminating04m45s\npc-deployment-774fccff58-wgdpd0/1Terminating04m45s\npc-deployment-774fccff58-wgdpd0/1Terminating04m45s\n\npc-deployment-774fccff58-lnfr60/1Terminating04m45s\npc-deployment-774fccff58-lnfr60/1Terminating04m46s\npc-deployment-774fccff58-lnfr60/1Terminating04m46s\n\npc-deployment-774fccff58-npx7s0/1Terminating04m46s\npc-deployment-774fccff58-npx7s0/1Terminating04m46s\npc-deployment-774fccff58-npx7s0/1Terminating04m46s\n\npc-deployment-5d776b56ff-j4cq40/1Pending00s\npc-deployment-5d776b56ff-j4cq40/1Pending00s\n\npc-deployment-5d776b56ff-47qrc0/1Pending00s\n\npc-deployment-5d776b56ff-mgqdk0/1Pending00s\npc-deployment-5d776b56ff-mgqdk0/1Pending00s\n\npc-deployment-5d776b56ff-47qrc0/1Pending00s\n\npc-deployment-5d776b56ff-j4cq40/1ContainerCreating01s\npc-deployment-5d776b56ff-47qrc0/1ContainerCreating01s\npc-deployment-5d776b56ff-mgqdk0/1ContainerCreating02s\n\npc-deployment-5d776b56ff-j4cq41/1Running040s\npc-deployment-5d776b56ff-47qrc1/1Running042s\npc-deployment-5d776b56ff-mgqdk1/1Running045s\n\n\n再查一下你会发现,之前的rs还在,这是为回滚准备的\n[qq@k8snode1~]$kubectlgetpod,deploy,rs-ndev\nNAMEREADYSTATUSRESTARTSAGE\npod/pc-deployment-5d776b56ff-47qrc1/1Running013m\npod/pc-deployment-5d776b56ff-j4cq41/1Running013m\npod/pc-deployment-5d776b56ff-mgqdk1/1Running013m\n\nNAMEREADYUP-TO-DATEAVAILABLEAGE\ndeployment.apps/pc-deployment3/33318m\n\nNAMEDESIREDCURRENTREADYAGE\nreplicaset.apps/pc-deployment-5d776b56ff33313m\nreplicaset.apps/pc-deployment-774fccff5800018m\n

滚动更新

spec:\nstrategy:#策略\ntype:RollingUpdate#滚动更新策略\nrollingUpdate:\nmaxSurge:25%\nmaxUnavailable:25%

[qq@k8snode1~]$kubectleditdeploypc-deployment-ndev\ndeployment.apps/pc-deploymentedited\n\n\n\npc-deployment-5d776b56ff-mgqdk1/1Running045s\npc-deployment-785c7c59f6-fv7690/1Pending00s\npc-deployment-785c7c59f6-fv7690/1Pending00s\npc-deployment-785c7c59f6-fv7690/1ContainerCreating00s\npc-deployment-785c7c59f6-fv7691/1Running032s\npc-deployment-785c7c59f6-j69pm0/1Pending00s\npc-deployment-5d776b56ff-47qrc1/1Terminating019m\npc-deployment-785c7c59f6-j69pm0/1Pending00s\npc-deployment-785c7c59f6-j69pm0/1ContainerCreating00s\npc-deployment-5d776b56ff-47qrc0/1Terminating019m\npc-deployment-5d776b56ff-47qrc0/1Terminating019m\npc-deployment-5d776b56ff-47qrc0/1Terminating019m\npc-deployment-785c7c59f6-j69pm1/1Running02s\npc-deployment-5d776b56ff-mgqdk1/1Terminating019m\npc-deployment-785c7c59f6-85n4f0/1Pending01s\npc-deployment-785c7c59f6-85n4f0/1Pending01s\npc-deployment-785c7c59f6-85n4f0/1ContainerCreating01s\npc-deployment-785c7c59f6-85n4f1/1Running01s\npc-deployment-5d776b56ff-mgqdk0/1Terminating019m\npc-deployment-5d776b56ff-j4cq41/1Terminating019m\npc-deployment-5d776b56ff-mgqdk0/1Terminating019m\npc-deployment-5d776b56ff-mgqdk0/1Terminating019m\npc-deployment-5d776b56ff-j4cq40/1Terminating019m\npc-deployment-5d776b56ff-j4cq40/1Terminating019m\npc-deployment-5d776b56ff-j4cq40/1Terminating019m\n

状态这边的意思看着有点多,也得分方法看\n例\npc-deployment-5d776b56ff-mgqdk1/1Running045s\n|deploy名|rs编号|pod随机名\n虽乱,但是还能分析出来的,刚开始pod在5d的rs里\ndeploy创建了78rs,在78rs里创建了fv769pod\n然后干掉了一台5drs里的pod,以此模式滚动更新,慢慢所以pod都被更新到了78rs里

版本回退

deployment支持版本升级过程中的暂停、继续功能以及版本回退等诸多功能,下面具体来看.

kubectlrollout:版本升级相关功能,支持下面的选项:

[qq@k8snode1~]$kubectlrolloutstatusdeploypc-deployment-ndev\ndeployment"pc-deployment"successfullyrolledout\n查看当前的版本更新状态\n[qq@k8snode1~]$kubectlrollouthistorydeploypc-deployment-ndev\ndeployment.apps/pc-deployment\nREVISIONCHANGE-CAUSE\n1<none>\n2<none>\n3<none>\n有三次版本更新记录,说明完成过两次升级\n\n版本回退\n我们先回滚版本1看看\n[qq@k8snode1~]$kubectlrolloutundodeploypc-deployment--to-revision=1-ndev\ndeployment.apps/pc-deploymentrolledback\n\n[qq@k8snode1~]$kubectlgetdeploy-ndev-owide\nNAMEREADYUP-TO-DATEAVAILABLEAGECONTAINERSIMAGESSELECTOR\npc-deployment3/3333h20mnginxnginx:1.17.1run=nginx-pod

[qq@k8snode1~]$kubectlgetrs-ndev-owide\nNAMEDESIREDCURRENTREADYAGECONTAINERSIMAGESSELECTOR\npc-deployment-5d776b56ff0003h19mnginxnginx:1.17.2pod-template-hash=5d776b56ff,run=nginx-pod\npc-deployment-774fccff583333h23mnginxnginx:1.17.1pod-template-hash=774fccff58,run=nginx-pod\npc-deployment-785c7c59f60003hnginxnginx:1.17.3pod-template-hash=785c7c59f6,run=nginx-pod\n\n#查看rs,发现第一个rs中有3个pod运行,后面两个版本的rs中pod未运行\n#其实deployment之所以可以实现版本的回滚,就是通过记录下历史rs来实现的,\n#一旦想回滚到哪个版本,只需要将当前版本pod数量降为0,然后将回滚版本的pod提升为目标数量就可以了

金丝雀发布

Deployment控制器支持控制更新过程中的控制,如“暂停(pause)”或“继续(resume)”更新操作。

比如有一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。这就是所谓的金丝雀发布。

更新deployment的版本,并配置暂停deploymen\n[qq@k8snode1~]$kubectlsetimagedeploypc-deploymentnginx=nginx:1.17.4-ndev&&kubectlrolloutpausedeploymentpc-deployment-ndev\ndeployment.apps/pc-deploymentimageupdated\ndeployment.apps/pc-deploymentpaused\n\n稍等一下,看一下状态,发现又创建了一个rs里面运行着一个容器,同时原版本没有减少\n[qq@k8snode1~]$kubectlgetrs-ndev\nNAMEDESIREDCURRENTREADYAGE\npc-deployment-5d776b56ff0003h27m\npc-deployment-6d6bc4bd51112m7s\npc-deployment-774fccff583333h32m\npc-deployment-785c7c59f60003h9m\n在看一下更新状态,可以看到更新了1个,更新未完成\n[qq@k8snode1~]$kubectlrolloutstatusdeploypc-deployment-ndev\nWaitingfordeployment"pc-deployment"rollouttofinish:1outof3newreplicashavebeenupdated...\n\n这种情况下在生产环境可以分配一小部分用户去访问新的版本,如果新版本没问题了,就可以完全更新了\n[qq@k8snode1~]$kubectlrolloutresumedeploypc-deployment-ndev\ndeployment.apps/pc-deploymentresumed\n原版本的3台机没了,全部更换为了新版本\n[qq@k8snode1~]$kubectlgetrs-ndev\nNAMEDESIREDCURRENTREADYAGE\npc-deployment-5d776b56ff0003h40m\npc-deployment-6d6bc4bd533314m\npc-deployment-774fccff580003h45m\npc-deployment-785c7c59f60003h22m\n看一下更新状态,也结束了\n[qq@k8snode1~]$kubectlrolloutstatusdeploypc-deployment-ndev\ndeployment"pc-deployment"successfullyrolledout\n

结束实验删除环境

文章到此结束,如果本次分享的deploy是什麼意思和pod控制器-deploy的问题解决了您的问题,那么我们由衷的感到高兴!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023