探针和pod生命周期

1、pod重启策略

  • restartPolicy的值一共有三个

  • Always 默认是这个,容器退出的话,就一直重启

  • Never 容器退出后,永远不重启容器

  • OnFailure 容器以非正常的方式退出容器后自动重新启动容器

2、存活探针

1、作用

  • 监听容器是否正常running的状态,如果容器不是健康的状态的话,kubelet就会根据重启策略判断,pod是否要重启操作

2、使用方式

  • execaction的方式,在容器中执行指定的命令,执行成功,退出码为0即可

  • httpgetaction 通过容器的ip地址,端口号和路径调用http Get方法,相应的状态码大于等于200小于400的话,则认为容器健康

  • tcpsocketaction 通过容器ip地址和端口执行tcp检查,如果能建立tcp检查,则表示容器健康

3、返回的结果

  • success,表示通过了检查

  • failure 表示未通过检查

  • unknown 表示检查没有正常运行

4、精确的字段

  • 这些字段探针都是通用的,下面的几个探针就重复赘述了
initialDelaySeconds # 容器启动后等待等待多少秒后探针开始工作,默认0秒

periodSeconds # 每个执行探测时间的间隔,默认是10S,最小值是1

timeoutSeconds # 探针执行检查请求后,等待响应的超时时间,默认是1s

successThreshold # 探针检查失败后认为成功的最小连接次数,默认1S,在liveness探针中,必须为1s,连接成功1次,就认为这个是成功,如果大于1的话,就会多成功连接几次,延迟恢复过程,通过了一次检查,就成功了,没有必要再次检测了

failureThreshold # 探针失败的重试次数,重试次数到达了一定数量后,就被认定为失败,默认是3S

5、操作

1、httpGet方式

  • 使用httpGET方式获取到页面的信息,有一个状态码,200到400的话就是健康的
[root@master mnt]# cat nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: docker.io/library/nginx:latest
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    livenessProbe:
      initialDelaySeconds: 20 
      httpGet:
        scheme: HTTP
        port: 80
        path: /
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

2、exec

  • 就是执行一些命令即可

3、tcpSocket

[root@master mnt]# cat nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: docker.io/library/nginx:latest
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    livenessProbe:
      initialDelaySeconds: 1 
      tcpSocket:
        port: 80
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

3、就绪探针(readinessProbe)

  • 虽然容器是运行了,但是容器里面的业务还没有启动,就会导致这个pod虽然正常运行了,但是访问的页面还是404,这个时候就需要就绪探针了

  • 然后就是如果失败的话,对应的service中的endpoints就不会关联这些pod了,移除去后,请求的流量就不会访问了

1、操作与上面一致的不赘述了

3、startupProbe探针

  • 在k8s1.16中增加了这个探针

  • 如果三个探针同时存在话,其他2个探针先会被禁用,直到pod满足startupprobe探针配置的条件,其他2个探针启动,如果不满足的话,按照规则重启容器

  • 这个探针只是在容器启动后按照配置满足一次后,不在进行后续的探测,只需要一次即可,其他2个探针在整个生命的周期中会一致进行检测的,

  • 操作与上面一致的

4、pod生命周期

  • 就是说在pod启动之前先做什么,然后pod死亡时做什么,这些操作等等

1、postStart

  • 就是Pod启动之前做了哪些操作,这个操作不完成的话,pod启动不了

2、preStop

  • 就是pod失败之后,会做哪些操作

3、初始化容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值