城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

云原生(十二)Kubernetes篇之Kubernetes基

5月17日 相见欢投稿
  Kubernetes基础入门一、基础知识
  以上展示了一个master(主节点)和6个worker(工作节点)的k8s集群dockerrunnamehellopodalpine是跑一个容器,容器的粒度有点小kubectlrunhellopodimagealpine跑一个Pod。Pod里面其实也是容器kubectlgetpod以前的dockerpsa所有kubectl在master节点运行,把命令请求发给apiserver。apiserver一系列处理master只负责调度,而workernode才是真正部署应用的。
  docker是每一个worker节点的运行时环境
  kubelet负责控制所有容器的启动停止,保证节点工作正常,已经帮助节点交互master
  master节点的关键组件:kubelet(监工):所有节点必备的,控制这个节点所有pod的生命周期以及与apiserver交互等工作kubeapiserver:负责接收所有请求,集群内对集群的任何修改都是通过命令行、ui把请求发给apiserver才能执行的。apiserver是整个集群操作对内、对外的唯一入口。不包含我们后来部署应用暴露端口的方式kubeproxy:整个节点的网络流量负责cri:都有容器运行时环境
  worker节点:kubelet(监工):所有节点必备的,控制这个节点所有pod的生命周期以及与apiserver交互等工作kubeproxy:整个节点的网络流量负责cri:都有容器运行时环境二、部署一个应用
  创建一次部署工作(自愈机制)kubectlcreatedeployxxxxxx:命令行会给apiserver发送要部署xxx的请求apiserver把这个请求保存到etcd
  kubectlcreate帮我们创建k8s集群中的一些对象kubectlcreatehelpkubectlcreatedeployment这次部署的名字image应用的镜像Createadeploymentnamedmynginxthatrunsthenginximagekubectlcreatedeploymentmynginximagenginx最终在一个机器上有pod、这个pod其实本质里面就是一个容器k8snginxmynginx6b74b79f57snlr4defaultdbeac79e1ce942c9bc59c8ca0412674b0k8s镜像(nginx)pod名(mynginx6b74b79f57snlr4)容器名(defaultdbeac79e1ce942c9bc59c8ca0412674b0)CreateadeploymentwithcommandkubectlcreatedeploymentmynginximagenginxdateCreateadeploymentnamedmynginxthatrunsthenginximagewith3replicas。kubectlcreatedeploymentmynginximagenginxreplicas3Createadeploymentnamedmynginxthatrunsthenginximageandexposeport80。kubectlcreatedeploymentmynginximagenginxport80
  Deployment(部署)在k8s中,通过发布Deployment,可以创建应用程序(dockerimage)的实例(dockercontainer),这个实例会被包含在称为Pod的概念中,Pod是k8s中最小可管理单元。在k8s集群中发布Deployment后,Deployment将指示k8s如何创建和更新应用程序的实例,master节点将应用程序实例调度到集群中的具体的节点上。创建应用程序实例后,KubernetesDeploymentController会持续监控这些实例。如果运行实例的worker节点关机或被删除,则KubernetesDeploymentController将在群集中资源最优的另一个worker节点上重新创建一个新的实例。这提供了一种自我修复机制来解决机器故障或维护问题。在容器编排之前的时代,各种安装脚本通常用于启动应用程序,但是不能够使应用程序从机器故障中恢复。通过创建应用程序实例并确保它们在集群节点中的运行实例个数,KubernetesDeployment提供了一种完全不同的方式来管理应用程序。Deployment处于master节点上,通过发布Deployment,master节点会选择合适的worker节点创建Container(即图中的正方体),Container会被包含在Pod(即蓝色圆圈)里。
  自愈:针对使用Deployment等部署的应用。
  kubectlrun:直接启动一个不会产生一次部署信息。所以删除就没
  kubectlcreatedeploy:启动一个Pod,以及记录这次部署信息。所以,这个pod即使挂了,这次部署信息有,就会强制同步到这次部署信息期望的最终结果;kubectlgetdeploy,pod都有内容三、应用程序探索了解KubernetesPods(容器组)了解KubernetesNodes(节点)排查故障
  创建Deployment后,k8s创建了一个Pod(容器组)来放置应用程序实例(container容器)。
  1、了解Pod
  Pod(容器组)是一个k8s中一个抽象的概念,用于存放一组container(可包含一个或多个container容器,即图上正方体),以及这些container(容器)的一些共享资源。这些资源包括:共享存储,称为卷(Volumes),即图上紫色圆柱网络,每个Pod(容器组)在集群中有个唯一的IP,pod(容器组)中的container(容器)共享该IP地址container(容器)的基本信息,例如容器的镜像版本,对外暴露的端口等
  Pod(容器组)是k8s集群上的最基本的单元。当我们在k8s上创建Deployment时,会在集群上创建包含容器的Pod(而不是直接创建容器)。每个Pod都与运行它的worker节点(Node)绑定,并保持在那里直到终止或被删除。如果节点(Node)发生故障,则会在群集中的其他可用节点(Node)上运行相同的Pod(从同样的镜像创建Container,使用同样的配置,IP地址不同,Pod名字不同)。
  TIP重要:Pod是一组容器(可包含一个或多个应用程序容器),以及共享存储(卷Volumes)、IP地址和有关如何运行容器的信息。如果多个容器紧密耦合并且需要共享磁盘等资源,则他们应该被部署在同一个Pod(容器组)中。2、了解Node
  Pod(容器组)总是在Node(节点)上运行。Node(节点)是kubernetes集群中的计算机,可以是虚拟机或物理机。每个Node(节点)都由master管理。一个Node(节点)可以有多个Pod(容器组),kubernetesmaster会根据每个Node(节点)上可用资源的情况,自动调度Pod(容器组)到最佳的Node(节点)上。
  每个KubernetesNode(节点)至少运行:Kubelet,负责master节点和worker节点之间通信的进程;管理Pod(容器组)和Pod(容器组)内运行的Container(容器)。kubeproxy,负责进行流量转发容器运行环境(如Docker)负责下载镜像、创建和运行容器等。
  Kubelet启动的Pod每个都有Ip,全集群任意位置均可访问kubeadminitapiserveradvertiseaddress10。170。11。8imagerepositoryregistry。cnhangzhou。aliyuncs。comlansonk8simageskubernetesversionv1。21。0servicecidr10。96。0。016podnetworkcidr192。168。0。016podnetworkcidr192。168。0。016:pod的ip范围
  calico:网络组件:【扁平化网络】3、故障排除
  kubectlget显示资源列表kubectlget资源类型获取类型为Deployment的资源列表kubectlgetdeployments获取类型为Pod的资源列表kubectlgetpods获取类型为Node的资源列表kubectlgetnodes
  查看所有名称空间的DeploymentkubectlgetdeploymentsAkubectlgetdeploymentsallnamespaces查看kubesystem名称空间的Deploymentkubectlgetdeploymentsnkubesystem
  并不是所有的对象都在名称空间中在名称空间里kubectlapiresourcesnamespacedtrue不在名称空间里kubectlapiresourcesnamespacedfalse
  kubectldescribe显示有关资源的详细信息kubectldescribe资源类型资源名称查看名称为nginxXXXXXX的Pod的信息kubectldescribepodnginxXXXXXX查看名称为nginx的Deployment的信息kubectldescribedeploymentmynginx
  kubectllogs查看pod中的容器的打印日志(和命令dockerlogs类似)kubectllogsPod名称查看名称为nginxpodXXXXXXX的Pod内的容器打印的ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a本案例中的nginxpod没有输出ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a,所以您看到的结果是空的kubectllogsfnginxpodXXXXXXX
  kubectlexec在pod中的容器环境内执行命令(和命令dockerexec类似)kubectlexecPod名称操作命令在名称为nginxpodxxxxxx的Pod中运行bashkubectlexecitnginxpodxxxxxxbinbash注意:新版1。21。0提示这个命令会过期
  4、kubectlrun
  也可以独立跑一个Podkubectlrunhelpkubectlrunnginximagenginx
  总结:kubectlcreate资源创建任意资源kubectlcreatedeploy创建部署kubectlrun只创建一个Podkubectlget资源名(nodepoddeploy)nxxx(指定名称空间,默认是default)获取资源kubectldescribe资源名(nodepoddeploy)xxx描述某个资源的详细信息kubectllogs资源名查看ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志akubectlexecitpod名命令进pod并执行命令kubectldelete资源名(nodepoddeploy)xxx删除资源
  四、应用外部可见了解Kubernetes中的Service了解标签(Label)和标签选择器(LabelSelector)对象如何与Service关联在Kubernetes集群外用Service暴露应用1、KubernetesService总览KubernetesPod是转瞬即逝的。Pod实际上拥有生命周期。当一个工作Node挂掉后,在Node上运行的Pod也会消亡。ReplicaSet会自动地通过创建新的Pod驱动集群回到目标状态,以保证应用程序正常运行。Kubernetes的Service是一个抽象层,它定义了一组Pod的逻辑集,并为这些Pod支持外部流量暴露、负载平衡和服务发现。Service使从属Pod之间的松耦合成为可能。和其他Kubernetes对象一样,Service用YAML或者JSON来定义。Service下的一组Pod通常由LabelSelector(请参阅下面的说明为什么您可能想要一个spec中不包含selector的服务)来标记。尽管每个Pod都有一个唯一的IP地址,但是如果没有Service,这些IP不会暴露在群集外部。Service允许您的应用程序接收流量。Service也可以用在ServiceSpec标记type的方式暴露ClusterIP(默认)在集群的内部IP上公开Service。这种类型使得Service只能从集群内访问。NodePort使用NAT在集群中每个选定Node的相同端口上公开Service。使用:从集群外部访问Service。是ClusterIP的超集。LoadBalancer在当前云中创建一个外部负载均衡器(如果支持的话),并为Service分配一个固定的外部IP。是NodePort的超集。ExternalName通过返回带有该名称的CNAME记录,使用任意名称(由spec中的externalName指定)公开Service。不使用代理。这种类型需要kubedns的v1。7或更高版本。2、Service和Label
  Service通过一组Pod路由通信。Service是一种抽象,它允许Pod死亡并在Kubernetes中复制,而不会影响应用程序。在依赖的Pod(如应用程序中的前端和后端组件)之间进行发现和路由是由KubernetesService处理的。
  Service匹配一组Pod是使用标签(Label)和选择器(Selector),它们是允许对Kubernetes中的对象进行逻辑操作的一种分组原语。标签(Label)是附加在对象上的键值对,可以以多种方式使用:指定用于开发,测试和生产的对象嵌入版本标签使用Label将对象进行分类
  3、kubectlexposekubectlexposedeploymenttomcat6port8912targetport8080typeNodePortport:集群内访问service的端口8912targetport:pod容器的端口8080nodePort:每个机器开发的端口30403进行验证kubectlgetsvccurlip:portkubectlexpose暴露,成一个负载均衡网络kubectlexec进去pod修改,并测试负载均衡
  五、伸缩应用程序扩缩容用kubectl扩缩应用程序扩缩一个Deployment
  我们创建了一个Deployment,然后通过服务提供访问Pod的方式。我们发布的Deployment只创建了一个Pod来运行我们的应用程序。当流量增加时,我们需要对应用程序进行伸缩操作以满足系统性能需求。
  扩容的Pod会自动加入到他之前存在的Service(负载均衡网络)kubectlscalereplicas3deploymenttomcat6持续观测效果watchkubectlgetpodsowide
  六、执行滚动升级使用kubectl执行滚动更新
  滚动更新允许通过使用新的实例逐步更新Pod实例从而实现Deployments更新,停机时间为零。
  与应用程序扩展类似,如果暴露了Deployment,服务(Service)将在更新期间仅对可用的pod进行负载均衡。可用Pod是应用程序用户可用的实例。
  滚动更新允许以下操作:将应用程序从一个环境提升到另一个环境(通过容器镜像更新)回滚到以前的版本持续集成和持续交付应用程序,无需停机
  应用升级:tomcat:alpine、tomcat:jre8alpinekubectlsetimagedeploymentmynginx2nginxnginx:1。9。1联合jenkins形成持续集成,灰度发布功能kubectlsetimagedeployment。appstomcat6tomcattomcat:jre8alpine可以携带record参数,记录变更回滚升级查看历史记录kubectlrollouthistorydeployment。appstomcat6kubectlrollouthistorydeploytomcat6回滚到指定版本kubectlrolloutundodeployment。appstomcat6torevision1kubectlrolloutundodeploytomcat6torevision1
  七、使用配置文件方式1、部署一个应用apiVersion:appsv1与k8s集群版本有关,使用kubectlapiversions即可查看当前集群支持的版本kind:Deployment该配置的类型,我们使用的是Deploymentmetadata:译名为元数据,即Deployment的一些基本属性和信息name:nginxdeploymentDeployment的名称labels:标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解app:nginx为该Deployment设置key为app,value为nginx的标签spec:这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用replicas:1使用该Deployment创建一个应用程序实例selector:标签选择器,与上面的标签共同作用,目前不需要理解matchLabels:选择包含标签app:nginx的资源app:nginxtemplate:这是选择或创建的Pod的模板metadata:Pod的元数据labels:Pod的标签,上面的selector即选择包含标签app:nginx的Podapp:nginxspec:期望Pod实现的功能(即在pod中部署)containers:生成container,与docker中的container是同一种name:nginxcontainer的名称image:nginx:1。7。9使用镜像nginx:1。7。9创建container,该container默认80端口可访问
  kubectlapplyfxxx。yaml
  2、暴露应用apiVersion:v1kind:Servicemetadata:name:nginxserviceService的名称labels:Service自己的标签app:nginx为该Service设置key为app,value为nginx的标签spec:这是关于该Service的定义,描述了Service如何选择Pod,如何被访问selector:标签选择器app:nginx选择包含标签app:nginx的Podports:name:nginxport端口的名字protocol:TCP协议类型TCPUDPport:80集群内的其他容器组可通过80端口访问ServicenodePort:32600通过任意节点的32600端口访问ServicetargetPort:80将请求转发到匹配Pod的80端口type:NodePortSerive的类型,ClusterIPNodePortLoaderBalancer
  3、扩缩容
  修改deployment。yaml中的replicas属性即可
  完成后运行kubectlapplyfxxx。yaml
  4、滚动升级
  修改deployment。yaml中的imageName属性等
  完成后运行kubectlapplyfxxx。yaml
  以上都可以直接kubectleditdeployservice等,修改完成后自动生效
投诉 评论

云原生(十二)Kubernetes篇之Kubernetes基Kubernetes基础入门一、基础知识以上展示了一个master(主节点)和6个worker(工作节点)的k8s集群dockerrunnamehellopodalpin……响应国发2号贵州机遇全省文旅行业创新人才培育工程计划6月13日6月15日,在省文旅厅、省乡村振兴局的指导下,由贵州省乡村旅游商会、贵州省研学旅行协会及贵州十二背后旅游集团联合主办的,国发2号贵州机遇全省文旅行业创新人才工程培训在……CBA公布新赛季外援优先续约权北京广东分别放弃林书豪威姆斯北京时间7月19日,CBA官方今日发布202223赛季CBA各俱乐部行使外籍球员优先续约权的公告,18支球队共对29名外援行使了优先续约权,其中布克、哈斯、摩尔特里、布莱克尼、……世界上最大的邮轮首次抵达美国2022年2月20日,劳德代尔堡迎来了世界上最大的邮轮海洋奇迹号。由于新冠疫情的影响,该船的建造和首航多次被推迟。但这一刻终于到来了,这艘船现在已抵达佛罗里达州的劳德代尔堡。……为什么改变自己这么困难?6个步骤,帮你打破自我制约,变得优秀很多人总希望自己能够干出一番事业,可是到头来,往往会败给自己的固步自封。或许你会奇怪,为什么改变自己会这么困难呢?明明自己真的很想让自己变得很有能力,很想武装自己,……晏平起名宝宝起名田姓宝宝名字虎年田姓女孩起什么名字比较好晏平起名:宝宝起名田姓宝宝名字大全虎年田姓女孩起什么名字比较好众所周知,女孩都是家里的掌上明珠,宝宝起名。而且,家长对于女儿的喜爱程度是远远大于男孩的,在给女孩起名字的时……克拉滕伯格给阿森纳的点球是错判,不敢相信VAR没让主裁看回放直播吧12月16日讯前英超名哨克拉滕伯格在其《每日邮报》专栏中表示,阿森纳获得点球的判罚是错误的。在今天凌晨阿森纳20击败西汉姆的比赛中,西汉姆球员在第66分钟送点染红,……云顶之弈云顶S1的回忆杀,曾经引领时代的阵容,你还记得吗云顶之弈s1赛季是一个最为和平的赛季,在当时除了某一些版本中可能会有个别阵容是特别的突出之外,在其他情况下,基本上是所有阵容都可以和平共存的的,与后面所出来的其他版本相比,这个……头条新闻之热点大事件头条新闻之:热点大事件【华为轮值董事长胡厚崑:没有自建芯片工厂的计划】华为轮值董事长胡厚崑表示,虽然面临芯片断供,但华为没有自建芯片厂的计划,产业分工是有要求的。华为依旧……回不去的昨天,看不到的未来,迷茫中的现在昨天,肆无忌惮地挥霍,没有规划!到头来赚到的除了回忆,别的一无所有,追求了错误的东西,浪费了宝贵的青春。今天,在迷茫中穿梭,碌碌无为,被现实狠狠打脸了,还要若无其事地微笑……3点锁定养娃必备纸尿裤如果说什么东西是养娃必备,纸尿裤绝对在第一梯队。03个月的宝宝平均每天要7次小便,3次大便,每隔23小时,就需要换一片纸尿裤。算下来,一天竟然要用812片,一个月就将近300多……友都八喜7月下半月相机销售排名索尼A7M4霸榜佳能新机表现不2022年8月6日,CAPACAMERAWEB公布了日本电器销售平台友都八喜(Yodobashi)2022年7月下半月相机销量排行榜,索尼A7M4连续第六期名列榜首,而佳能的两……
盘点5个不违反广义相对论规则的穿越方法,你们知道几个?别再说苹果挤牙膏了,原来这家厂商更狠,五年都不升级轻则挨饿受冻,重则进医院,明星们为了走红毯能有多拼?浙江广厦新赛季更名浙江东阳光未来五年主场落户黄龙盗汗自汗,出汗多?这几种止汗中成药赶快收藏起来吧喜迎二十大项目建设进行时丨焊花闪耀中的极限穿插来自一汽弗迪新外媒台积电的拐点出现了他获2022年诺贝尔生理学或医学奖,为何实至名归?新英雄暃上架时间确定,甄姬女儿国国王品质确定史诗德约抵澳后被关进小黑屋!没收手机,2人看守,将被遣返回欧洲假面骑士ReviceDXVolcano恶魔印章公开,烤蛋架来苹果旗下最便宜5G手机要来了?掌握快捷键秒变电脑大神朝阳一首朝气蓬勃的青春之歌2015关于大学生助学金申请书范文2019初中毕业季语录汇总新版毕业学生个人的自我鉴定多篇古代民歌《改千家诗》原文及赏析PD虚拟机教程如何在PD虚拟机中设置保护操作的密码?晕机药有副作用吗这就是存储设备店主最在意患上的2种普遍误区罪15年过去了评分依旧9。5分,生存之民工才是管虎的代表作夏季六个快速减肥消脂的方法快行动起来吧夸夸我爸爸

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找