Kubernetes集群实战 课件 3编写YAML脚本部署服务;4探测Pod健康性_第1页
Kubernetes集群实战 课件 3编写YAML脚本部署服务;4探测Pod健康性_第2页
Kubernetes集群实战 课件 3编写YAML脚本部署服务;4探测Pod健康性_第3页
Kubernetes集群实战 课件 3编写YAML脚本部署服务;4探测Pod健康性_第4页
Kubernetes集群实战 课件 3编写YAML脚本部署服务;4探测Pod健康性_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

项目3编写YAML脚本部署服务目录CONTENTS1编写Yaml脚本创建Deployment控制器2编写Yaml创建任务型控制器任务1使用Yaml脚本创建Pod3.1.1Yaml脚本概述使用命令行创建Kubernets创建相关资源后,不便于审计和修改,因为当某个运维人员使用命令创建了集群应用,过段时间,就连自己都会忘记,更不便于修改了,同时,也不能够进行复用。编写Yaml脚本方式运维的原因大小写敏感格式缩进“#”表示注释字符后使用空格Yaml脚本语法规则apiVersion(服务版本)Kind(资源类型)metadata(元数据)spec(定义)Yaml脚本常用关键字段3.1.2编写Yaml脚本创建Pod对象在编写yaml脚本时,有一个非常好用的命令是kubectlexplain,可以使用它解释任何想定义的资源,这里要定义一个Pod资源,所以使用kubectlexpainpod来查看pod资源需要定义的字段信息.1.使用explain查看Pod资源字段1.语义解释2.语法解释3.创建pod4.修改pod5.删除pod2.编写yaml脚本定义Pod3.1.3编写Yaml脚本创建Deployment控制器1.使用explain查看deployment资源字段通过deployment资源的描述信息,可以发现,它同样有四个比较重要的字段,分别是apiVersion、kind、metadata、spec。2.编写yaml脚本定义Deployment编写yaml脚本定义Deployment在yaml目录中,创建文件de.yaml3.创建Deployment使用kubectlapply创建deployment4.查询de1的信息发现de1控制器有3个Pod,都处于READY就绪状态了。5.查询de1控制器控制的pod[root@masteryaml]#kubectlgetpod6.修改yaml脚本进入de.yaml将replicas的副本数修改成4个,保存,重启基于yaml脚本创建控制器。3.1.4编写Yaml脚本创建Service服务发现1.使用explain查看service资源字段3.创建service5.访问服务2.编写yaml脚本定义service4.查询mynginx服务发现的详细信息6.配置在集群外部访问服务任务2编写Yaml创建任务型控制器3.2.1创建Jobs任务控制器ob控制器用于调配pod对象运行一次性任务,容器中的进程在正常运行结束后不会对其进行重启,而是将pod对象置于completed状态。若容器中的进程因错误而终止,则需要依据配置确定重启与否,未运行完成的pod对象因其所在的节点故障而意外终止后会被重新调度。实践中,有的作业任务可能需要运行不止一次,用户可以配置它们以串行或并行的方式运行,这种类型的job控制器对象有以下两种1.单工作队列的串行式job即以多个一次性的作业方式串行执行多次作业,直至满足期望的次数。2.多工作队列的并行式job这种方式可以设置工作队列数,即作业数,每个队列仅负责运行一个作业。Job任务控制器的使用场景3.2.1创建Jobs任务控制器1.使用explain查看job资源字段使用kubectlexplain检查job控制器的字段2.编写Job控制器的Yaml脚本在yaml目录下创建job.yaml文件,根据job资源对象的字段信息,编写job.yaml的脚本3.执行脚本并查看执行信息(1)执行脚本(2)查看job控制器(3)查看pod状态(4)查看任务执行日志编写Yaml脚本创建Job任务控制器3.2.2创建CronJob周期任务控制器理解了Job控制器后,CronJob就很简单了,只是多了一个周期时间,即在某个固定的时间执行一个任务,CronJob的时间配置和linux中的crontab格式是一样的。1.使用explain查看cronjob资源字段2.编写cronjob控制器的Yaml脚本3.查看cronjob控制器4.查看任务执行情况5.查看任务执行情况CronJob任务控制器的使用场景编写Yaml脚本创建CronJob任务控制器3.2.3创建DaemonSet守护任务控制器DaemonSet守护任务控制器的使用场景有时候,需要在每个节点运行一个Pod容器,实现在新的节点加入时自动运行该Pod容器,必如收集每个工作节点的日志信息、监控每个节点。这时候,就需要构建一个DaemonSet守护任务型控制器。1.使用explain查看DaemonSet资源字段2.编写DaemonSet控制器的Yaml脚本编写Yaml脚本创建DaemonSet任务控制器3.创建控制器,观察结果查看控制器以及通过控制器创建的Pod,结果如下图所示。谢谢观看项目4探测Pod健康性目录CONTENTS任务1使用livenessProbe探测Pod任务2使用readinessprobe探测pod任务1使用livenessProbe探测Pod4.1.1理解探针作用探用解作理的针

现代一些分布式系统中,用户访问的不再是单台主机,而是一个由成百上千台实例组成的集群,用户请求通过负载均衡器分发到不同的实例,负载均衡帮助解决单台服务器的访问压力,同时提高了系统的高可用性,而健康检查常常作为当前实例是否“可用”的判断标准,如果系统发现某台实例健康检查不通过,负载均衡器将不会把流量导向该实例。

1.检查pod健康的必要性ExecHttpGet4.1.1理解探针作用

2.livenessProbe探针

livenessProbe探针是为了查看容器是否正在运行,是让Kubernetes知道你的应用是否活着,如果你的应用还活着,那么Kubernetes就让它继续存在。如果你的应用程序已经停止运行了,Kubernetes将移除Pod并重新启动一个来替换它,livenessProbe探针的探测方式有3种,分别是执行命令Exec探测、HttpGet探测、TcpSocket探测。TcpSocket探测方式1.查看livenessProbe字段使用kubectlexplain检查linenessProbe探针的字段,命令如下:通过此命令的结果可以发现,livenessProbe的几个重要子字段是exec、httpGet、tcpSocket、failureThreshold、initialDelaySeconds、periodSeconds、successThreshold、、timeoutSeconds,其中exec、httpGet、tcpSocket是检测容器的三种方式。其它几个字段的含义如下:(1)initialDelaySeconds

容器启动后第一次执行探测是需要等待多少秒。(2)periodSeconds

执行探测的频率,默认是10秒。(3)timeoutSeconds

探测超时时间,默认1秒。(4)successThreshold

探测失败后,最少连续探测成功多少次才被认定为成功,默认是1。(5)failureThreshold

探测成功后,最少连续探测失败多少次才被认定为失败,默认是3。[root@master~]#kubectlexplainpod.spec.containers.livenessProbe4.1.2使用Exec执行命令探测2.编写

livenessProbe探测脚本

定义了一个Pod,当容器启动时,执行使用Shell脚本命令,首先建立/tmp/test,过20秒后,删除这个文件,休眠容器3600秒,目的是保持容器处于运行状态。

然后定义了一个livenessProbe存活性探针,在容器启动1秒后,使用Shell脚本探测容器中是否存在/tmp/test文件,因为过20秒后才删除文件,所以最开始探测一定是成功的,容器正常运行,但探测的频率是3秒,所以在经过7次探测后,/tmp/test文件已经被删除了,探测就失败了,容器就会重启进行自愈。4.1.2使用Exec执行命令探测01020304创建Pod的命令如下:创建Pod创建完Pod后,检查Pod的信息,命令如下:查看Pod信息通过查看Pod的详细信息,可以发现Pod重启的原因,命令如下:查看重启原因容器运行20秒后,再次查看Pod信息,命令如下:过20秒后再次查看Pod信息3.执行脚本并检查

结果[root@master

yaml]#kubectldescribepodexec-pod[root@master

yaml]#kubectlapply-fliveness-exec.yaml[root@master

yaml]#kubectlgetpod[root@master

yaml]#kubectlgetpod4.1.2使用Exec执行命令探测1.编写探测脚本

脚本定义了一个Pod,使用nginx:1.8.1镜像启动了一个容器,定义了一个livenessProbe存活性探针,在容器启动1秒后,检测网站根目录下index.html是否存在,如果不存在,探测就失败了,容器就会重启进行自愈。4.1.3使用httpGet方式探测(4)再次查看Pod运行状态(2)查看Pod信息(5)查看容器重启原因(1)创建Pod4.1.3使用httpGet方式探测2.执行脚本并检查结果(3)删除index.html文件【1】首先进入容器【2】进入网站根目录【3】删除index.html文件任务2使用readinessprobe探测pod4.2.1理解readinessProbe探针作用

livenessProbereadinessProbe配置和参数相同相同探测失败后的行为重启容器把容器标记为Unready,不接受请求作用判断是否需要重启以实现自愈判断容器是否准备好对外提供服务初始值成功,防止应用在没成功启动前,被误杀失败,防止应用还没准备好,有请求进来返回值返回值在[200,400)范围内认为成功,返回值5xx认为失败同livenessReadiness探针是为了查看容器是否准备好接受HTTP请求,翻译为就绪探针(readinessProbe),就绪探针旨在让Kubernetes知道你的应用是否准备好为请求提供服务。Kubernetes只有在就绪探针通过才会把流量转发到Pod。如果就绪探针检测失败,Kubernetes将停止向该容器发送流量,直到它通过。1.查看readinessProbe字段通过研究发现,readinessProbe探针和livenessProbe探针的定义字段是一致的,主要包括exec、httpGet、tcpSocket、failureThreshold、initialDelaySeconds、periodSeconds、successThreshold、、timeoutSeconds等字段。2.编写探测脚本创建一个名称为readiness-deployment的控制器,使用httpGet的方式探测每个容器根目录是否存在index.html主页文件,如果存在,即进入就绪状态,如果失败,则将该Pod设置成未就绪状态,就绪状态可以通过Service服务发现访问,未就绪状态Pod则从服务列表中删除。3.创建控制器创建控制器的命令如下:[root@master

yaml]#kubectlapply-freadiness

温馨提示

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

评论

0/150

提交评论