云计算容器编排技术 课件 单元6Kubernetes控制器_第1页
云计算容器编排技术 课件 单元6Kubernetes控制器_第2页
云计算容器编排技术 课件 单元6Kubernetes控制器_第3页
云计算容器编排技术 课件 单元6Kubernetes控制器_第4页
云计算容器编排技术 课件 单元6Kubernetes控制器_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kubernetes控制器--Replicaset1目录Replicaset资源模板文件01任务Replicaset控制器概述02任务学习目标【知识目标】了解kubernetes控制器的概念和作用;了解Replicaset的基本用法。1Replicaset控制器概述1控制器能够管理pod,监测pod运行状况。确保每一个pod资源始终处于定义或者期望的目标状态。Replicaset控制器概述控制器的作用1ReplicaSet是kubernetes中的一种副本控制器,简称rs,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。Replicaset控制器概述1Replicaset控制器概述ReplicaSet与Deployments使用Deployment代替ReplicaSetDeployment管理ReplicaSet,ReplicaSet管理Pod对象1Replicaset控制器概述ReplicaSet组成Replicaset控制器主要由三个部分组成:用户期望的Pod副本数标签选择器Pod资源模板2Replicaset资源模板文件2Replicaset资源模板文件定义Replicaset资源定义Replicaset资源需要的字段:apiVersion #当前资源使用的api版本kind #定义资源类型metadata#元数据,定义、name、namespace、label等spec#定义副本数、标签选择器、Pod模板等status#定义状态信息2Replicaset资源模板文件replicaset.spec字段replicaset.spec字段:minReadySeconds

#新创建的Pod应准备就绪的最小秒数,默认值为0;replicas

#定义的Pod副本数,根据我们指定的值创建对应数量的Podselector

#用于匹配Pod的标签选择器template

#定义Pod的模板,基于这个模板定义的所有Pod是一样的2Replicaset资源模板文件replicaset.spec.template字段replicaset.spec.template字段metadata

#元数据spec

#用于Pod里的容器属性等配置。2Replicaset资源模板文件匹配标签选择器replicaset.spec.selector字段定义的标签选择器必须能够匹配到spec.template.metadata.labels里定义的Pod标签,否则Kubernetes将不允许创建ReplicaSet。ThankYOU!Kubernetes控制器--Replicaset2目录Replicaset管理Pod01任务Replicaset使用案例02任务学习目标【知识目标】了解Replicaset的基本用法;【技能目标】能够使用Replicaset创建Pod;能够使用Replicaset扩容、缩容。1Replicaset使用案例1把nginx_v1.0.tar上传到node1和node2上,手动解压[root@node1]#dockerload-inginx_v1.0.tar[root@node2]#dockerload-inginx_v1.0.tarReplicaset使用案例上传镜像1[root@master~]#catnginx.yamlapiVersion:apps/v1kind:ReplicaSetmetadata:name:nginxspec:replicas:3selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:v1.0imagePullPolicy:IfNotPresentports:-containerPort:80Replicaset使用案例编写资源清单文件编写一个ReplicaSet资源清单,部署nginx资源1Replicaset使用案例部署并查看资源[root@master~]#kubectlapply-fnginx.yaml

[root@master~]#kubectlgetrs[root@master~]#kubectlgetpods

1Replicaset使用案例资源清单详细说明apiVersion:apps/v1#ReplicaSet这个控制器属于的核心群组kind:ReplicaSet#创建的资源类型metadata:name:nginx#控制器的名字spec:replicas:3#管理的pod副本数量selector:matchLabels:app:nginx#管理带有app=nginx标签的pod1Replicaset使用案例资源清单详细说明template:#定义pod的模板metadata:labels:app:nginx#pod标签,一定要有,这样上面控制器就能找到它要管理的pod是哪些了spec:containers:#定义pod里运行的容器-name:nginx#定义容器的名字image:nginx:v1.0ports:#定义端口

-containerPort:80#定义容器暴露的端口2Replicaset管理Pod2Replicaset管理Pod动态扩容修改配置文件nginx.yaml里的replicas的值即可,原来replicas:3,现在变成replicaset:4[root@master~]#kubectlapply-fnginx.yaml[root@master~]#kubectlgetrs[root@master~]#kubectlgetpods2Replicaset管理Pod动态缩容修改配置文件nginx.yaml里的replicas的值即可,把replicaset:4变成replicas:3[root@master~]#kubectlapply-freplicaset.yamlreplicaset.apps/frontendconfigured[root@master~]#kubectlgetrs[root@master~]#kubectlgetpods2Replicaset管理Pod动态缩容把请求提交给apiserver,实时修改。spec下的replicas后面的值改成3。[root@master~]#kubectleditrsnginx2Replicaset管理PodPod更新把nginx_v2.0.tar上传到node1和node2上,手动解压。[root@node1~]#dockerload-inginx_v2.0.tar[root@node2~]#dockerload-inginx_v2.0.tar2Replicaset管理PodPod更新修改资源模板文件yaml,修改镜像image:nginx:v1.0变成image:nginx:v2.0[root@master~]#vimnginx.yaml2Replicaset管理PodPod更新重建并查看资源[root@master~]#kubectlapply-fnginx.yamlreplicaset.apps/nginxconfigured[root@master~]#kubectlgetrs-owide2Replicaset管理PodPod更新原来的pod使用的还是之前的镜像,新创建的pod才会使用最新的镜像[root@master~]#kubectlgetpods-owide[root@master~]#curl10.244.1.42Replicaset管理PodPod更新将10.244.1.4这个ip对应的pod删除:[root@master~]#kubectldeletepodsnginx-75r9hpod"nginx-75r9h"deleted[root@master~]#kubectlgetpods-owide查看新的pod:nginx-z2mwt。[root@master~]#curl10.244.2.5ThankYOU!Kubernetes控制器Deployment1目录Deployment资源清单文件01任务Deployment控制器概述02任务学习目标【知识目标】了解kubernetes控制器的概念和作用;了解Deployment的基本用法。1Deployment控制器概述1最常用的资源对象声明式的定义ReplicaSet和Pod定义Deployment创建ReplicaSet,通过ReplicaSet创建Pod删除Deployment,也会删除其下对应的ReplicaSet和Pod实现Pod滚动升级和回滚Deployment控制器概述Deployments控制器1扩展:声明式定义是指通过kubectlapply-f执行修改后的资源清单yaml文件更改资源的方式Deployment控制器概述Deployments控制器1Deployment内只有一个ReplicaSet处于活跃状态动更新需要加readinessProbe和livenessProbe探测Deployment控制器概述Deployments管理rs和Pod1Deployment可以使用声明式定义,直接在命令行通过纯命令的方式完成对应资源版本的内容的修改Deployment能提供滚动式自定义自控制的更新Deployment控制器概述Deployments管理rs和Pod1通过Deployment对象,可以轻松的做到以下事情:1、创建ReplicaSet和Pod2、滚动升级和回滚应用3、平滑地扩容和缩容4、暂停和继续DeploymentDeployment控制器概述Deployments功能总结2Deployment资源清单文件2Deployment资源清单文件Deployment对象查看Deployment资源对象部分组成apiVersion

#当前资源使用的api版本kind #定义资源类型metadata#元数据,定义、name、namespace、label等spec#定义容器的副本数、标签选择器、Pod模板等status#定义状态信息2Deployment资源清单文件deploy.spec字段查看Deployment下的spec字段[root@master~]#kubectlexplain

deployment.specminReadySeconds#新创建的Pod应准备就绪的最小秒数,默认值为0;paused

#暂停,当我们更新的时候创建pod先暂停,不是立即更新。2Deployment资源清单文件deploy.spec字段progressDeadlineSeconds #可选字段,指定希望在系统报告部署失败之前等待部署进行的秒数-显示为条件Type=Progressing,

Status=False,默认为600。replicas

#定义的Pod副本数revisionHistoryLimit #保留的历史版本,默认是10selector

#用于匹配Pod的标签选择器strategy

#更新策略template#定义Pod的模板2Deployment资源清单文件deploy.spec.strategy字段deploy.spec.strategy字段--支持两种更新Recreate#重建式更新。RollingUpdate#滚动更新,我们可以自定义滚动更新方式。2Deployment资源清单文件deploy..spec.strategy.rollingUpdate字段deploy.spec.strategy.rollingUpdate字段maxSurge:更新的过程当中最多允许超出指定的目标副本数有几个,有两种取值方式,第一种直接给定数量,第二种根据百分比maxUnavailable:最多允许几个不可用2Deployment资源清单文件deploy.spec.template字段deployment.spec.template为Pod定义的模板,和Pod定义不太一样,template中不包含apiVersion和Kind属性,要求必须有metadata。deployment.spec.template.spec为容器的属性信息,其他定义内容和Pod一致。2Deployment资源清单文件deploy.spec.template.spec字段查看Deployment下的spec.template.spec字段activeDeadlineSeconds#activeDeadlineSeconds表示Pod可以运行的最长时间,达到设置的该值后,Pod会自动停止。affinity#定义亲和性,跟直接创建pod时候定义亲和性类似2Deployment资源清单文件deploy.spec.template.spec字段automountServiceAccountToken#身份认证相关的containers#定义容器属性dnsConfig#设置Pod的DNSdnsPolicy#dnsPolicy决定Pod内预设的DNS配置策略

None无任何策略:使用自定义的策略

Default默认:使用宿主机的dns配置,/etc/resolv.conf

ClusterFirst集群DNS优先,与Default相反,会预先使用kube-dns(或CoreDNS)的信息当预设置参数写入到该Pod内的DNS配置。2Deployment资源清单文件deploy.spec.template.spec字段

ClusterFirstWithHostNet集群DNS优先,并伴随着使用宿主机网络:同时使用hostNetwork与kube-dns作为Pod预设DNS配置。ephemeralContainers#定义临时容器hostAliases#在pod中增加域名解析的hostIPC#使用主机IPChostNetwork#是否使用宿主机的网络hostPID#可以设置容器里是否可以看到宿主机上进程2Deployment资源清单文件deploy.spec.template.spec字段initContainers #定义初始化容器nodeName#定义pod调度到具体哪个节点上nodeSelector#定义节点选择器overhead #overhead是1.16引入的字段,在没有引入overhead之前,只要一个节点的资源可用量大于等于Pod的requests时,这个Pod就可以被调度到这个节点上。引入overhead之后,只有节点的资源可用量大于等于overhead加上requests的和时才能被调度上来。2Deployment资源清单文件deploy.spec.template.spec字段restartPolicy#Pod重启策略securityContext#是否开启特权模式terminationGracePeriodSeconds <integer>#在真正删除容器之前,K8S会先发终止信号(kill-15{pid})给容器,默认30stolerations<[]Object>#定义容忍度volumes<[]Object>#挂载存储卷ThankYOU!Kubernetes控制器Deployment2目录Deployment管理Pod01任务Deployment使用案例02任务自定义滚动更新策略任务03学习目标【知识目标】掌握Deployment的基本用法。【技能目标】能够使用Deployment创建Pod;能够使用Deployment扩容、缩容、滚动更新、回滚;能够使用Deployment自定义更新策略。1Deployment使用案例1上传镜像[root@node1~]#dockerload-inginx_v1.0.tar[root@node2~]#dockerload-inginx_v1.0.tar[root@node1~]#dockerload-inginx_v2.0.tar[root@node2~]#dockerload-inginx_v2.0.tarDeployment使用案例deployment部署nginx服务1[root@master~]#catdeploy-nginx.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:nginxspec:replicas:2selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:myappimage:nginx:v1.0imagePullPolicy:IfNotPresentports:-containerPort:80Deployment使用案例部署nginx服务,副本数为2,镜像使用nginx:v1.0,本地不存在是下载镜像deployment部署nginx服务1Deployment使用案例创建资源并查看deploykubectlapply-fdeploy-nginx.yaml[root@master~]#kubectlgetdeploydeployment部署nginx服务1Deployment使用案例查看rs状态:[root@master~]#kubectlgetrsdeployment部署nginx服务1Deployment使用案例查看pod状态:[root@master~]#kubectlgetpods[root@master~]#kubectlgetpods-owidedeployment部署nginx服务1Deployment使用案例请求创建的pod资源:[root@master~]#curl10.244.2.7[root@master~]#curl10.244.3.8deployment部署nginx服务1Deployment使用案例资源清单文件详细解读apiVersion:apps/v1#deployment对应的api版本kind:Deployment#创建的资源是deploymentmetadata:

name:nginx#deployment的名字spec:

replicas:2#deployment管理的pod副本数

selector:#标签选择器

matchLabels:#matchLabels下定义的标签需要跟template.metadata.labels定义的标签一致

app:nginx#标签内容,K/V键值对

template:

metadata:

labels:

app:nginx#该内容应与上面matchLabels所管理的值一致

spec:#定义容器的属性

containers:

-name:myapp

image:nginx:v1.0#容器使用的镜像

imagePullPolicy:IfNotPresent#镜像拉取策略

ports:

-containerPort:80#容器里的应用的端口deployment部署nginx服务2Deployment管理Pod2Deployment管理Pod扩容通过deployment管理应用,实现扩容,修改资源文件中的replicas数量为3[root@master~]#catdeploy-demo.yaml2Deployment管理Pod扩容[root@master~]#kubectlapply-fdeploy-nginx.yaml[root@master~]#kubectlgetpodsPod副本数变成3个。2Deployment管理Pod扩容查看nginx这个控制器的详细信息,看到新增一个Pod[root@master~]#kubectldescribedeploynginx2Deployment管理Pod缩容通过deployment管理应用,实现缩容,修改资源文件中的replicas数量为2[root@master~]#catdeploy-demo.yaml2Deployment管理Pod缩容[root@master~]#kubectlapply-fdeploy-nginx.yaml[root@master~]#kubectlgetpodsPod副本数变成2个。2Deployment管理Podscale管理扩缩容缩容或扩容可直接通过kubectlscale完成[root@master~]#kubectlscaledeploymentnginx--replicas=5deployment.apps/nginxscaled2Deployment管理Pod滚动更新通过deployment管理应用,实现滚动更新。在一个终端窗口执行如下:[root@master~]#kubectlgetpods-lapp=nginx-w2Deployment管理Pod滚动更新打开一个新的终端窗口更改镜像版本,把image:nginx:v1.0变成image:nginx:v2.0。[root@master~]#vimdeploy-nginx.yaml2Deployment管理Pod滚动更新执行新文件[root@master~]#kubectlapply-fdeploy-nginx.yaml再回到刚才执行监测kubectlgetpods-lapp=nginx-w的那个窗口查看2Deployment管理Pod回滚另外一个窗口查看到存在两个rs[root@master~]#kubectlgetrs查看nginx这个控制器的历史版本:[root@master~]#kubectlrollouthistorydeploymentnginx2Deployment管理Pod回滚kubectlrolloutundo实现回滚[root@master~]#kubectlrolloutundodeploymentnginx--to-revision=1[root@master~]#kubectlrollouthistorydeploymentnginx3自定义滚动更新策略3自定义滚动更新策略Deployment会在

.spec.strategy.type==RollingUpdate时,采取滚动更新的方式更新Pod。可以指定maxUnavailable和maxSurge来控制滚动更新过程。3自定义滚动更新策略maxUnavailable字段.spec.strategy.rolling

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论