k8s探针

探针是由kubelet对容器执行的定期诊断。要执行诊断,kubelet调用由容器实现的Handler。有三类处理程序:

  1. ExecAction:在容器内执行指定命令。如果命令退出时返回码为0认为诊断成功。
  2. TCPSocketAction:对指定的容器ip:端口号进行TCP检查。如果端口打开则诊断成功。
  3. HTTPGetAction:对指定的容器ip:端口号/路径执行HTTP Get请求。如果状态码大于等于200且小于400,诊断成功。

探测结果:

  • 成功:
  • 失败:
  • 未知:诊断失败,不会采取任何行动

探测种类:

  • livenessProbe:存活检测。探测失败,kubelet会杀死容器,且容器服从其重启策略。不设该字段,默认Success
  • readinessProbe:就绪探测。探测失败,端点控制器将从与pod匹配的所有svc端点中删除pod的ip地址。
  • startupProbe:探测容器内应用是否已启动。如果启用startupProbe,则禁用其他探测,知道它成功为止。探测失败,kubelet将杀死容器,容器服从重启策略

readinessProbe:

apiVersion: v1
kind: Pod
metadata:
  name: readiness-httpget-pod
  namespace: default
spec:
  containers:
  - name: readiness-httpget-container
    image: nginx
    imagePullPolicy: IfNotPresent
    readinessProbe:
      httpGet:
        port: 80
        path: /index1.html
      initialDelaySecods: 1
      periodSeconds: 3

startupProbe:

livenessProbe:
  httpGet:
    path: /test
    port: 80
  failureThreshold: 1
  initialDelay: 10
  periodSeconds: 10

startupProbe:
  httpGet:
    path: /test
    port: 80
  failureThreshold: 10
  initialDelay: 10
  periodSeconds: 10

//只有startupProbe探测成功后才会交给livenessProbe。 startupProbe配置的是10*10s,所以只要应用在100s内启动都是OK的,而应用挂掉10s就会发现问题。

 

上一篇:sql查询,如果有更新时间则按更新时间倒序,没有则按创建时间倒序排列


下一篇:docker安装kubelet