K8S简历(五)

今天我认真了解了在容器成功启动后运行的post start,和在运行时检查机制liveness probe,readiness probe和容器在被删除前运行的pre start。post start和pre start在生成环节用的必须少了解即可。


pod创建过程

liveness probe & readiness probe两个字段作用 和写法:

liveness probe和readiness start这两个字段都是检查容器的运行情况,但他们用途有很大的不同;
他们的检查方式都是有三种:ExecAction,TCPsocketAution,HTTPGetAution。

liveness start字段:

他只要是检查容器是否正常运行,而不能检查服务是否正常接收请求。如nginx的端口是打开的而且主进程也是正常运行,但他的主页文件被删除了。在这种情况下就不在liveness probe字段检查范围。

readiness probe字段:

readiness probe字段检查的是容器在正常的运行时能否提供正常服务。

ExecAction&TCPSocketAution&HTTPGetAution:

ExecAction:检查方式主要是通过自己编写的检查命令检查。
TCPSocketAution:使用container的IP地址和指定的端口作为socket。如果端口处于打开状态视为成功。
HTTPGetAution:指定URL和端口,如果响应码200~300则成功。


ExecAution例子:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-exec
  labels:
    app: liveness
spec:
  containers:
  - name: liveness
    image: busybox
    command:                       #创建测试探针探测的文件
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:
      initialDelaySeconds: 10   #延迟检测时间
      periodSeconds: 5          #检测时间间隔
      exec:
        command:
        - cat
        - /tmp/healthy

TCPSocketAution例子:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-tcp
  labels:
    app: liveness
spec:
  containers:
  - name: liveness
    image: nginx
    livenessProbe:
      initialDelaySeconds: 15
      periodSeconds: 20
      tcpSocket:
        port: 80

HTTPGetAution例子:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-http
  labels:
    test: liveness
spec:
  containers:
  - name: liveness
    image: mydlqclub/springboot-helloworld:0.0.1
    livenessProbe:
      initialDelaySeconds: 20   #延迟加载时间
      periodSeconds: 5          #重试时间间隔
      timeoutSeconds: 10        #等待探针检查结果时间
      httpGet:
        scheme: HTTP      #用于连接host的协议,默认为HTTP
        port: 8081
        path: /actuator/health    #url

注:readiness probe和liveness probe的写法差不多参数也差不多;只是把 livenessProbe:改成 readinessProbe:即可

PostStart&PostStart:

Kubemetes支持两种类型的容器钩子,分别为PostStart和PostStart。
PostStart。该钩子在容器被创建后立刻触发,通知容器它已经被创建。该钩子不需要向其所对应的hook handler传人任何参数。如果该钩子对应的hook handler执行失败,则该容器会被杀死,并根据该容器的重启策略决定是否要重启该容器。
PreStop。该钩子在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。在该钩子对应的hook handler完成后不论执行的结果如何,Docker daemon会发送一个SGTERN信号量给Docker daemon来删除该容器。同样地。该钩子也不需要传人任何参数

因为post start&pre statrt写法和liveness probe类似使用我用了截图:

poststatr

注:pre start和post start的写法差不多参数也差不多;只是把 postStart:改成 preStart:即可

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问题背景 在 Kubernetes 中对 Pod 中 Container 的状况检查提供了 Probe(探针)机制...
    陈嘉曦阅读 2,991评论 0 1
  • 存活性探针( livenessProbe) 判断容器是是否为健康,如果应用程序不能正常响应请求,则标记容器为非健康...
    jianweixs阅读 4,599评论 1 2
  • 对于Pod的健康状态检测,kubernetes提供了两类探针(Probe)来执行对Pod的健康状态检测: live...
    taj3991阅读 2,983评论 0 0
  • 现在在Pod的整个生命周期中,能影响到Pod的就只剩下健康检查这一部分了。在k8s集群当中,我们可以通过配置liv...
    wangfs阅读 1,108评论 0 1
  • 健康检查 Kubernetes文档例子: 这里定义的容器liveness会创建/healthy文件,然后30秒后删...
    邝健强阅读 2,627评论 0 0