一、pod存活性探测

pod spec为容器列表中的相应容器定义其专用的探针即可启用存活性探测,目前,k8s的容器支持存活性探测的方法包含:ExecAction、TCPSocketActon和HTTPGetAction。

1、设置exec探针

exec类型的探针通过在目标容器中执行由用户自定义的命令来判定容器的健康状态,若命令状态返回值为0则表示成功通过探测。spec.containers.livenessProbe.exec字段用于定义此类检测,它只有一个属性“command”,用于定义要执行的命令。

exec指定的命令运行于容器中,会消耗容器的可用资源配额,另外,考虑到探测操作的效率本身等因素,探测操作的命令应该尽可能简单和轻量。

2、设置HTTP探针

基于HTTP的探测向目标容器发起一个HTTP请求,根据其响应码进行结果判定,响应码形如2**或3**时表示检测通过。spec.containers.livenessProbe.httpGet字段用于定义此类检测,它的可用配置字段包括如下:

host:请求的主机地址,默认为podIP;也可以在httpHeaders中使用host来定义

httpHeaders:定义的请求报文首部

path:请求的HTTP资源路径,即URL path

scheme:建立连接使用的协议,仅可为HTTP或HTTPS,默认为HTTP

这种检测方式仅对分层架构中的当前一层有效,例如,它能检测应用程序工作正常与否的状态,但重启操作却无法解决其后端服务(如数据库或缓存服务)导致的故障。此时,容器可能会被一次次的重启,直到后端服务恢复正常为止。其他两种方式也存在类似的问题。

3、设置TCP探针

基于TCP的存活性探测用于向容器的特定端口发起TCP请求并尝试建立连接进行结果判定,连接建立成功即为通过检测。它比基于HTTP的探测要更高效更节省资源,但精确度略低,毕竟建立连接成功未必意味着页面资源可用。spec.containers.livenessProbe.Socket字段用于定义此类检测,主要包含以下两个可用的属性:

host:请求连接的目标IP地址,默认为podIP

port:请求连接的目标端口,必选字段。

4、存活性探测行为属性

使用kubectl describe命令可查看配置了存活性探测的pod对象的相关信息,它给出了探测方式及额外的配置属性delay、timeout、period、success和failure及其各自的相关属性值。用户没有明确定义这些属性字段时,它们会使用各自的默认值。这些属性信息可通过spec.containers.livenessProbe的如下属性字段来给出:

initialDelaySeconds:存活性探测延迟时长,即容器启动多久之后再开始第一次探测操作,显示为delay属性;默认为0s,即容器启动后立刻便开始进行探测。

timeoutSeconds:存活性探测的超时时长,显示为timeout属性,默认为1s,最小值也是1s。

periodSeconds:存活性探测的频度,显示为period属性,默认为10s,最小值为1s;过高的频率会对pod对象带来较大的额外开销,而过低的频率又会使得对错误的反应不及时。

successThreshold:处于失败状态时,探测操作至少连续多少次的成功才被认为是通过检测,显示为success属性,默认值为1,最小值也为1。

failureThreshold:处于成功状态时,探测操作至少连续多少次的失败才被视为检测不通过,显示为failure属性,默认值为3,最小值为1。

二、pod就绪行探测

pod对象启动后,容器应用通常需要一段时间才能完成其初始化过程,避免pod对象启动后立即让其处理客户端请求,而等待容器初始化工作执行完成并转为就绪状态,尤其是存在其他提供相同服务的pod对象的场景更是如此。

与存活性探测机制相同,就绪性探测也支持Exec、HTTP GET和TCPSocket三种探测方式,且各自的定义机制也都相同。但与存活性探测触发的操作不同的是,探测失败时,就绪性探测不会杀死或重启容器以保证其健康性,而是通知其尚未就绪,并触发依赖于其就绪状态的操作(例如,从service对象中移除此pod对象)以确保不会有客户端请求接入此pod对象。未定义就绪性探测的pod对象在pod进入running状态后将立即就绪,在容器需要时间进行初始化的场景中,在应用真正就绪之前必然无法正常相应客户端请求,因此,生成时间中,必须为关键性pod资源中的容器定义就绪性探测机制。

将容器定义中的livenessProbe字段替换为readinessProbe即可定义就绪性探测的配置。

k8spod探测的更多相关文章

  1. 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案

    如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...

  2. sql手工注入时的探测技巧汇总

    工具的灵活性肯定比不上人,在手工探测的基础上再去自定义工具,才是正道. sql注入时手工探测技巧 =================================================== ...

  3. 内核探测工具systemtap简介

    systemtap是内核开发者必须要掌握的一个工具,本文我将简单介绍一下此工具,后续将会有系列文章介绍systemtap的用法. 什么是systemtap 假如现在有这么一个需求:需要获取正在运行的 ...

  4. 探测FTP状态,socket方式

    1.FTP返回码列表(哪里都能找到的): 120 Service ready in NNN minutes. 服务在NNN时间内可用 --------------------------------- ...

  5. Atitit 破解qq空间(2)-------探测权限

    Atitit 破解qq空间(2)-------探测权限 /AtiPlatf_cms/src/com/attilax/net/httpTest.java  package com.attilax.net ...

  6. 微软BI 之SSIS 系列 - 使用 SQL Profilling Task (数据探测) 检测数据源数据

    开篇介绍 SQL Profilling Task 可能我们很多人都没有在 SSIS 中真正使用过,所以对于这个控件的用法可能也不太了解.那我们换一个讲法,假设我们有这样的一个需求 - 需要对数据库表中 ...

  7. 使用Modernizr探测HTML5/CSS3新特性(转载)

    转载地址:http://www.cnblogs.com/TomXu/archive/2011/11/18/detecting-html5-css3-features-using-modernizr.h ...

  8. TCP连接探测中的Keepalive和心跳包

    TCP连接探测中的Keepalive和心跳包 tcp keepalive 心跳 保活 Linuxtcp心跳keepalive保活1. TCP保活的必要性 1) 很多防火墙等对于空闲socket自动关闭 ...

  9. 线性探测再散列 建立HASH表

    根据数据元素的关键字和哈希函数建立哈希表并初始化哈希表,用开放定址法处理冲突,按屏幕输出的功能表选择所需的功能实现用哈希表对数据元素的插入,显示,查找,删除. 初始化哈希表时把elem[MAXSIZE ...

随机推荐

  1. android webkit 初始化流程

    以android 4.2为例 1, android 4.2中 WebViewClassic.java 为 WebView.java的代理类. 2,程序运行后,浏览器首先加载webkit so. Web ...

  2. 【并行计算-CUDA开发】OpenCL、OpenGL和DirectX三者的区别

    什么是OpenCL? OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器 ...

  3. AKKA文档2.3(java版)—什么是角色

    原文:http://doc.akka.io/docs/akka/2.3.5/general/actors.html译者:Vitas 什么是角色? 前面角色系统一节介绍了一群角色如何形成一个层次结构,并 ...

  4. w 命令

    NAME w - Show who is logged on and what they are doing. SYNOPSIS w - [husfiV] [user] 参数说明: -f 开启或关闭显 ...

  5. [爬虫] selenium介绍

    认识selenium 在爬取百度文库的过程中,我们需要使用到一个工具selenium(浏览器自动测试框架),selenium是一个用于web应用程序测试的工具,它可以测试直接运行在浏览器中,就像我们平 ...

  6. plpython 中文分词Windows 版

    windows 下安装版本匹配python-3.4.3.amd64.msipostgresql-10.1-2-windows-x64.exe create language plpython3u;se ...

  7. redis缓存穿透00

    缓存穿透 缓存穿透,是指查询一个数据库一定不存在的数据.正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询到的对象,放进缓存.如果数据库 ...

  8. [BZOJ2594] [WC2006]水管局长(Kruskal+LCT)

    [BZOJ2594] [WC2006]水管局长(Kruskal+LCT) 题面 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可 ...

  9. Python和其他编程语言

    Python和其他编程语言 一.Python介绍 Python的创始人为吉多·范罗苏姆(Guido van Rossum),如下图,少数几个不秃头的语言创始人.1989年的圣诞节期间,Guido为了打 ...

  10. node工具之pm2

    pm2 PM2是带有内置负载平衡器的Node.js应用程序的生产过程管理器.它使您可以使应用程序永远保持活动状态,无需停机即可重新加载它们,并简化常见的系统管理任务. 安装 npm install p ...