首页 > 其他分享 >Kubernetes--Pod存活性探测(设置HTTP探针)

Kubernetes--Pod存活性探测(设置HTTP探针)

时间:2022-10-29 20:59:28浏览次数:46  
标签:kubectl healthz http Kubernetes -- liveness HTTP Pod

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

  • host < string > :请求的主机地址,默认为Pod IP,也可以在httpHeaders中使用“Host:”来定义。
  • port < string > :请求的端口,必选字段。
  • httpHeaders < []Object >:自定义的请求报文首部。
  • path < string >:请求的HTTP资源路径,即URL path。
  • scheme:建立连接使用的协议,仅可为HTTP或者HTTPS,默认为HTTP。

下面是定义在资源清单文件liveness-http.yaml中的示例,它通过lifecycle中的postStart hook创建了一个专用于httpGet测试的页面文件healthz:

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness-http-demo
    image: nginx:1.12-alpine
    ports:
    - name: http
      containerPort: 80
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Healthy > /usr/share/nginx/html/healthz"]
    livenessProbe:
      httpGet:
        path: /healthz
        port: http
        scheme: HTTP

  上面资源清单文件定义的httpGet测试中,请求的资源路径为“/heathz”,地址默认为Pod IP,端口使用了容器中定义的端口名称HTTP这也是明确为容器指明要暴露的端口的用途之一。首先创建此Pod对象:

]$ kubectl apply -f liveness-http.yaml
pod “liveness-http” created

  而后查看其健康状态检测相关信息,健康状态检测正常时,容器也将正常运行:

]$ kubectl describe pods liveness-http
······
Containers:
  liveness-http-demo:
······
Port:           80/TCP
State:          Running
  Started:      Sat, 08 Oct 2022 09:37:52 +0800
 Ready:          True
    Restart Count:  0
Liveness:       http-get http://:http/healthz delay=0s timeout=1s period=10s #success=1 #failure=3
······

  接下来借助于“kubectl exec”命令删除经由postStart hook创建的测试页面healthz:

kubectl exec liveness-http rm /usr/share/nginx/html/healthz

  

而后再次使用“kubectl describe pods liveness-http”查看其详细的状态信息,事件输出中的信息可以表明探测测试失败,容器被杀掉后进行了重新创建:

一般来说,HTTP类型的探测操作应该针对专用的URL路径进行,例如前面示例中特别为其准备的“/healthz”。另外,此URL路径对应的Web资源应该以轻量化的方式在内部对应用程序的各关键组件进行全面检测以确保它们可正常向客户端提供完整的服务。

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

标签:kubectl,healthz,http,Kubernetes,--,liveness,HTTP,Pod
From: https://www.cnblogs.com/zhangxin9/p/16839806.html

相关文章

  • CORS跨域资源共享问题
    同源策略介绍同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源......
  • python(牛客)试题解析1 - 入门级
    导航:一、NC103反转字符串二、NC141判断是否为回文字符串三、NC151最大公约数四、NC65斐波那契数列----------分-割-线-----------一、NC10......
  • coredump了解
    转自:https://blog.csdn.net/qq_20553613/article/details/1066723191.介绍coredump指的是应用程序因为各种原因导致异常终止时,操作系统将应用程序的异常发生时的状态信息......
  • win10启用长路径
    方法一:操作组策略Win+R输入 gpedit.msc依次点击【计算机配置】->【管理模板】->【系统】->【文件系统】,找到“启用win32长路径”并双击打开选择“启用”选项,然后单击......
  • 数据结构—第二章线性表习题
    (1)B(2)A(3)B(4)A(5)D(6)B(7)C(8)A(9)B(10)D(11)C(12)D(13)D(14)A(15)C(1)voidMergeList(LinkList&La,LinkList&Lb,LinkList&Lc){//将两个递增的有序链表La和Lb合并为一个递增的有序链表Lc......
  • perf 原理
    perf工具分内核态部分和用户态部分。  后续添加详细实验及过程截图集成到 Linux 内核的代码,负责向硬件发出指令。perf 用户空间实用程序,可让您使用内核代码并帮助......
  • 能够作用于序列的一些运算符和函数
    1、序列:可以分为可变序列和不可变序列;(可变:列表;不可变:元组,字符串)2、“+、*”“+”:序列的加法表示两个序列的拼接   “*”:表示序列的重复,复制   3、列表,元组......
  • Codeforces Round #831 (Div. 1 + Div. 2)
    A.FactoriseN+M题意:给出一个质数,求另一个质数,使得两个数之和不是质数。解:把那个质数再输出一遍就行了。B.JumboExtraCheese2题意:给出一些长方形,按照以下规则把长......
  • Note:SNAP
    概述:本文分析了已有的神经网络加速器,并对其进行了分类:按照数据加载方式:channel-first、channel-last按照对稀疏性的支持:A、W/A、WSNAP属于channel-first,W/A,其压......
  • 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]
    前言简单介绍一下在排查问题。献给初学者。该文的前置篇:https://www.cnblogs.com/aoximin/p/16838657.html正文什么是linux系统linux是基于名为procfs的特殊文件系......