关系经济人类预测化学自然
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

不背锅运维一文搞清楚应用发布到k8s集群的基本流程

10月2日 发如雪投稿
  1。使用yaml文件创建资源对象每种资源的apiVersion和kind可通过kubectlapiresources命令进行查看
  tantianrantestbk8smaster:kubectlapiresourcesgrepDeploymentdeploymentsdeployappsv1trueDeploymenttantianrantestbk8smaster:
  gowebdemo。yamlapiVersion:v1kind:Namespacemetadata:name:testaapiVersion:appsv1kind:Deploymentmetadata:name:gowebdemonamespace:testaspec:replicas:10selector:matchLabels:app:gowebdemotemplate:metadata:labels:app:gowebdemospec:containers:name:gowebdemoimage:192。168。11。247webdemogowebdemo:20221229v3apiVersion:v1kind:Servicemetadata:name:gowebdemonamespace:testaspec:ports:port:80protocol:TCPtargetPort:8090selector:app:gowebdemotype:NodePort关于标签的主要作用:标记、过滤、关联(主要体现在deployment、pod、service,3者标签保持一致),可设定多个标签,建议设定至少2个标签,一个为项目标签,一个为应用标签。
  关于创建、更新和删除的命令只用于创建kubectlcreatefxxx。yaml创建和更新(需要yaml文件里的字段支持更新,并不是所有字段都支持更新)kubectlapplyfxxx。yaml卸载kubectldeletefxxx。yaml2。编写yaml的套路分享套路1:可以直接手写,但容易出错套路2:参考官方示例,然后改成自己的套路3:通过命令行来获取,也是有2个方式,一是利用尝试运行(dryrun)的机制再配合o来输出一个yaml文件),二是通过get来得到yaml文件,得到yaml文件后再自行修改
  下面演示通过create来得到yaml在kubectl级别上进行验证kubectlcreatedeploymentweb1imagenginxreplicas5dryrunclient指的是提交到apiserver进行验证kubectlcreatedeploymentweb1imagenginxreplicas5dryrunserver下面来一个deployment的例子,得到其他资源的yaml也是这个套路tantianrantestbk8smaster:kubectlcreatedeploymentweb1imagenginxreplicas5dryrunclientoyamlapiVersion:appsv1kind:Deploymentmetadata:creationTimestamp:nulllabels:app:web1name:web1spec:replicas:5selector:matchLabels:app:web1strategy:{}template:metadata:creationTimestamp:nulllabels:app:web1spec:containers:image:nginxname:nginxresources:{}status:{}还可以配合重定向输出到yaml文件kubectlcreatedeploymentweb1imagenginxreplicas5dryrunclientoyamltest。yaml
  下面演示通过get命令来得到yaml文件,使用o来指定yaml的格式输出,其他资源也是这个套路kubectlgetpodsntestaoyaml
  编写yaml的时候,字段名太多记不住或者想不起来怎么办?可以使用explain来查看字段层级找第一级kubectlexplaindeployment找第二级kubectlexplaindeployment。spec再比如查pod相关的kubectlexplainpods。spec。containers3。应用生命周期管理deployment是最常用的k8s工作负载控制器(WorkloadControllers),是k8s的一个抽象概念,用于更高级层次对象,部署和管理Pod,卡控制器还有DaemonSet、StatefulSet等。
  3。1Deployment
  Deployment主要功能:管理Pod和ReplicaSet具有上线部署、副本设定、滚动升级、回滚等功能
  Deployment应用场景:网站、API、微服务
  Pod与控制器的关系图:
  应用生命周期管理流程:
  3。2应用部署的基本流程部署升级回滚删除
  3。2。1部署推荐的方式kubectlapplyfxxx。yaml或者kubectlcreatedeploymentwebimagenginxreplicas3
  在本示例中,部署的是我自己使用go语言写的一个很简单的webdemo
  访问一下看看
  3。2。2升级所谓的升级,其实就是更新镜像,且有3种方式,自动触发滚动升级
  方式1:直接修改yaml文件中的镜像,然后applykubectlapplyfxxx。yaml方式2:使用命令设置deployment使用的镜像kubectlsetimagedeploymentwebnginxnginx1。17使用系统编辑器打开进行编辑kubectleditdeployment
  发布方式有3种:滚动发布、蓝绿发布、灰度发布(金丝雀、AB测试、冒烟测试。灰度发布是最复杂的方式,发布的方式是为了避免上线后出现的问题。)
  K8S默认是滚动升级:滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。
  滚动升级在k8s中的实现:它是通过1个Deployment和2个ReplicaSet来实现的,滚动更新一次只升级一小部分pod,成功后,再升级一部分pod,最终完成所有Pod升级,整个过程始终有Pod在运行,从而保证了业务的连续性。
  ReplicaSet:副本集,主要维护Pod副本数量,不断对比当前Pod数量于期望Pod数量。ReplicaSet用途:Deployment每次发布都会创建一个RS(ReplicaSet的缩写)作为记录,用于实现滚动升级和回滚
  可以查看deployment的详情,详情里其实是记录了升级的过程kubectlgetdeploymentntestakubectldescribedeploymentgowebdemontesta
  查看ReplicaSet(RS)记录(初次的部署和后续升级都会新创建一个RS,升级多少次就会创建多少个)tantianrantestbk8smaster:kubectlgetrsntestaNAMEDESIREDCURRENTREADYAGEgowebdemo6fbb74fdbb00041mgowebdemo7b6649f78920202032m此处DESIRED和CURRENT以及READY字段有值的话,表示是当前正在使用的RSgowebdemo866579659900024h查看正在使用的RS的详情kubectldescribersgowebdemo7b6649f789ntesta注意:升级后,旧的RS会被保留,主要用于后面回滚使用,且每次只能有一个RS在使用。
  当新版的镜像已经做好需要滚动更新的时候,那就要修改deployment中指定的镜像,修改的方式有2种:使用命令和直接修改yaml文件方式1:使用命令命令格式kubectlsetimagedeploymentDeploymentNameContainerNameImagenNamespace例子step1:获取deploymentkubectlgetdeploymentntestastep2:查看deployment详情kubectldescribedeploymentgowebdemontesta。。。PodTemplate:Labels:appgowebdemoContainers:gowebdemo:容器名字Image:192。168。11。247webdemogowebdemo:20221229v3镜像Port:noneHostPort:noneEnvironment:noneMounts:noneVolumes:none。。。step3:设置deployment的镜像kubectlsetimagedeploymentgowebdemogowebdemo192。168。11。247webdemogowebdemo:20221229v3ntesta
  方式2:直接修改yaml(推荐)apiVersion:appsv1kind:Deploymentmetadata:name:gowebdemodeployment名称namespace:testaspec:replicas:50副本selector:matchLabels:app:gowebdemotemplate:metadata:labels:app:gowebdemospec:containers:name:gowebdemoimage:192。168。11。247webdemogowebdemo:20221229v3镜像
  水平扩缩容,也就是修改副本的数量,也有2种方式,命令和修改yaml文件方式1:命令kubectlscaledeploymentgowebdemoreplicas5ntesta
  方式2:修改yaml文件中的replicas参数,再applyapiVersion:appsv1kind:Deploymentmetadata:name:gowebdemonamespace:testaspec:replicas:5修改副本数量。。。。。。3。2。3回滚当应用发布失败,需要回滚时。
  查看发过有哪些版本查看历史kubectlrollouthistorydeploymentntestadeployment。appsgowebdemoREVISIONCHANGECAUSE4none6none8none9none通过命令修改deployment的镜像进行升级时,后面加record参数,再查看历史后就会记录这条命令kubectlsetimagedeploymentgowebdemogowebdemo192。168。11。247webdemogowebdemo:20221229v2ntestarecordFlagrecordhasbeendeprecated,recordwillberemovedinthefuturedeployment。appsgowebdemoimageupdated上面加了record参数,再查看历史,可以看到记录的这条命令kubectlrollouthistorydeploymentntestadeployment。appsgowebdemoREVISIONCHANGECAUSE4none6none9none10kubectlsetimagedeploymentgowebdemogowebdemo192。168。11。247webdemogowebdemo:20221229v2namespacetestarecordtrue就是这里
  查看版本号和RS的对应关系,以及和镜像的对应关系查看RStantianrantestbk8smaster:kubectlgetrsntestaNAMEDESIREDCURRENTREADYAGEgowebdemo6fbb74fdbb0005h15mgowebdemo7b6649f7890005h6mgowebdemo866579659900029hgowebdemob988694565554h22m当前使用的RS查看当前使用的RS详情tantianrantestbk8smaster:kubectldescribersgowebdemob98869456ntesta。。。Annotations:deployment。kubernetes。iodesiredreplicas:5deployment。kubernetes。iomaxreplicas:7deployment。kubernetes。iorevision:11这个11就是当前版本号deployment。kubernetes。iorevisionhistory:7,9历史版本kubernetes。iochangecause:kubectlsetimagedeploymentgowebdemogowebdemo192。168。11。247webdemogowebdemo:20221229v3namespacetestarecordtrueControlledBy:DeploymentgowebdemoReplicas:5current5desiredPodsStatus:5Running0Waiting0Succeeded0FailedPodTemplate:Labels:appgowebdemopodtemplatehashb98869456Containers:gowebdemo:Image:192。168。11。247webdemogowebdemo:20221229v3使用的镜像Port:noneHostPort:none。。。查看历史版本tantianrantestbk8smaster:kubectlrollouthistorydeploymentntestadeployment。appsgowebdemoREVISIONCHANGECAUSE4none6none10kubectlsetimagedeploymentgowebdemogowebdemo192。168。11。247webdemogowebdemo:20221229v2namespacetestarecordtrue11kubectlsetimagedeploymentgowebdemogowebdemo192。168。11。247webdemogowebdemo:20221229v3namespacetestarecordtrue这个REVISION是11
  通过过滤来获取到发布版本和对应的镜像过滤revision和Imagetantianrantestbk8smaster:kubectldescribe(kubectlgetrsonamentestagrepgoweb)ntestagrepErevision:Image:deployment。kubernetes。iorevision:4Image:192。168。11。247webdemogowebdemo:20221229v1deployment。kubernetes。iorevision:10Image:192。168。11。247webdemogowebdemo:20221229v2deployment。kubernetes。iorevision:6Image:192。168。11。247webdemogowebdemo:20221228v1deployment。kubernetes。iorevision:11Image:192。168。11。247webdemogowebdemo:20221229v3tantianrantestbk8smaster:过滤更详细的,过滤revision、Image、Name、Replicastantianrantestbk8smaster:kubectldescribe(kubectlgetrsonamentestagrepgoweb)ntestagrepErevision:Image:Name:Replicas:Name:gowebdemo6fbb74fdbbdeployment。kubernetes。iorevision:4Replicas:0current0desiredImage:192。168。11。247webdemogowebdemo:20221229v1Name:gowebdemo7b6649f789deployment。kubernetes。iorevision:10Replicas:0current0desiredImage:192。168。11。247webdemogowebdemo:20221229v2Name:gowebdemo8665796599deployment。kubernetes。iorevision:6Replicas:0current0desiredImage:192。168。11。247webdemogowebdemo:20221228v1Name:gowebdemob98869456deployment。kubernetes。iorevision:11Replicas:5current5desiredImage:192。168。11。247webdemogowebdemo:20221229v3
  只回滚到上一个版本tantianrantestbk8smaster:kubectlrolloutundodeploymentgowebdemontestadeployment。appsgowebdemorolledback
  回滚到指定的历史版本查看当前正在使用哪个版本tantianrantestbk8smaster:kubectldescribe(kubectlgetrsonamentestagrepgoweb)ntestagrepErevision:Replicas:deployment。kubernetes。iorevision:4Replicas:0current0desireddeployment。kubernetes。iorevision:14当前正在使用的版本,版本号14,且副本是5Replicas:5current5desired副本数量deployment。kubernetes。iorevision:6Replicas:0current0desireddeployment。kubernetes。iorevision:13Replicas:0current0desired假设要回滚到最初的版本,也就是版本号是4tantianrantestbk8smaster:kubectlrolloutundodeploymentgowebdemotorevision4ntestadeployment。appsgowebdemorolledbacktantianrantestbk8smaster:3。2。4删除(当项目需要下线时)如果该项目是直接编写yaml的,可这样删除(下线)kubectldeletefgowebdemo。yaml如果该项目的命名空间、deployment、service是用命令的,那就需要手动删除下线kubectldeletedeploymentgowebdemontestakubectldeletesvcgowebdemontestakubectldeletenstesta最后如需要go开发的webdemo源码的朋友可私信我,一起交流,感谢!
  本文转载于(喜欢的盆友关注我们):https:mp。weixin。qq。comsjBJTLYvXkCtdyO4Ap9UA
搜索 投诉 评论 转载

旅途中睡眠的八大禁忌外出旅行虽然十分惬意,大师长途旅行也是一件非常累人的事情。有很多人会在旅途中失眠,这也是大家应该注意的问题。旅行中如何获得优质的睡眠?只要多了解一些旅游疾病知识,相信就会找到答……贷款利率创历史新低2022年湖南金融机构向实体让利285亿元2022年度湖南省金融运行形势新闻发布会现场。向一鹏摄中新网长沙1月31日电(向一鹏)截至2022年末,湖南新发放贷款利率持续35个月在5以下,创历史新低,2022年全年……人心复杂,保护好自己就好这世上的人心是真的好复杂,人心隔肚皮,欺骗,猜忌,背叛,让人防不胜防,而有些善良的人,却傻傻的去信任他她人,毫无、防备之心,以至于被人伤的伤痕累累,从今往后不要再去轻易的相信任……冬夜里的个红豆饼冬夜里的18个红豆饼曾世杰亲爱的子扬、子安:我希望这信没有教训人的感觉,这不是我的习惯。但九月子扬上了大学后,我们之间好像愈隔愈远。手机总打不通;约好的时间,……做过造句用做过造句大全211、做过子宫肌瘤开腹术后还能生育吗?212、我以前从未做过滑水运动。213、他们将教你闻所未闻或者曾未做过的东西。214、我们希望能够使这款正在开发的游戏……不背锅运维一文搞清楚应用发布到k8s集群的基本流程1。使用yaml文件创建资源对象每种资源的apiVersion和kind可通过kubectlapiresources命令进行查看tantianrantestbk8smas……iPhone14烧屏惹争议,小米11烧主板却获得好评,雷军这最近iPhone14Pro又火出圈了,先是因为大面积出现灵动岛烧屏的问题被网友吐槽,紧接着又有网友发现自己的iPhone14Pro熄屏状态下屏幕出现横线,接连的翻车不得不让大家……吴江新春文旅活动正式发布,8大景区免费玩春节越近,年味愈浓,苏州吴江区文体广电和旅游局推出内容丰富、极具地方特色的新春文旅惠民活动,全方位感受吴江年味。新春文旅系列活动吴江过大年系列文旅活动市民朋友……靠谱的网络赚钱项目通常使用的种方式教会你怎么赚钱网络赚钱的方式有很多种,但是目前互联网上公认的能赚钱的方法并不多,今天网赚研究院就给大家总结一下靠谱的网络赚钱的方法,一共总结了十七种,暂时就只能想这么多了,毕竟不是专业的机构……国乒10人惨遭淘汰!单打8强全部诞生,男队3人女队5人晋级北京时间1月20日凌晨,乒乓球WTT卡塔尔赛单打八强名单正式诞生,目前国乒男队有3人获得晋级,女队则是5人,其余10位选手则被淘汰出局,无缘冲击冠军。虽然中国队在八强人数……国产CPU的介绍国产cpu有华为鲲鹏、飞腾CPU、海光CPU、龙芯、兆芯、申威。其中华为鲲鹏、飞腾CPU采用的是ARM架构,龙芯采用的是MIPS架构,而兆芯、海光CPU采用的是X86架构……豫园新春民俗灯会马庄香包临涣踩街长三角这些精彩民俗活动不容错新春新旅程,你的兔年旅行计划安排好了吗?沪苏浙皖文化和旅游部门推出的长三角区域民俗专项旅游产品,地域特色突出,内容丰富多彩,可以承包你一整年的民俗体验计划,一起来看看吧!……
社区团购供货商抖音曝光自己血本无归,创始人却圈钱跑路618来了!收好这份手机选购攻略及推荐清单孩子的快乐PS前后差很大的名媛姚安娜王文也判若两人,欧阳姐妹是p图高手EDA设计软件板块净利率排名第二高达76主营电子产品半计算机安卓手机内卷新高度,厂商主动让用户占便宜七夕节送礼送什么?这些科技好物不容错过,保证生活幸福美满光遇破晓季兑换攻略,无季卡可拿两款斗篷和发型,真的很值南美足球无弱旅,厄瓜多尔足球知多少河北一酒吧公园走红,有世界唯一的观光塔,被称小垦丁年轻人的第一款DIY机械键盘,洛斐Lofree小翘键盘不仅好胡慧中携女来内地打拼!64岁美丽如初,21岁女儿175斤仍难
如何将PowerPoint演示文稿转换成Word打败关羽后的吕蒙为何会突然暴毙了语文,给我留下了什么分享工作励志短文年度公司党支部书记抓党建述职报告给爷爷买鞋作文四年级秋天作文秋天秋天你真美垃圾邮件造句用垃圾邮件造句大全夏天慢慢逼近作文1100字家长如何让孩子远离儿童性侵害官方西班牙队主教练恩里克离任识字7教学反思

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州