参考链接

https://segmentfault.com/a/1190000021402257

https://jimmysong.io/kubernetes-handbook/guide/configure-liveness-readiness-probes.html

https://www.jianshu.com/p/d87a50272310

 

背景:

在k8s部署服务的时候,会出现pod是running状态,也可以进入到容器中,但是服务端口没有起,尤其再是小组件,没有受到关注的情况下,就会对生产环境造成影响。这个时候就需要加一些健康检查

上面的几个链接都很好的描述了什么是健康检查以及探针,下面我们讲一下如何去使用探针。

案例:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  labels:
    xxx: yyy
  name: ubot-qa
spec:
  selector:
    matchLabels:
      xxx: yyy
  template:
    metadata:
      labels:
        xxx: yyy
    spec:
      containers:
      - image: xxx.domain.cn/xxx/xxx:v1
        name: xxx
        volumeMounts:
          - name: logdir
            mountPath: /data/research/xxx/log
          - name: configmap
            mountPath: /data/research/xxxx/conf
        env:
        - name: TZ
          value: "Asia/Shanghai"
      dnsPolicy: ClusterFirstWithHostNet
      hostNetwork: true
      nodeSelector:
        xxx: yyy
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      volumes:
      - hostPath:
          path: /data/log/xxx
        name: logdir
      - configMap:
          name: xxx
        name: configmap
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate

上面是一开始的ds文件,apply后,由于代码bug问题,导致pod起了,容器起了,但是服务没有起。下面加一下健康检查部分配置


livenessProbe:
  exec:
    command: ['sh','-c','netstat -nlp|grep -w 5160']  #检测端口是否存在
  initialDelaySeconds: 10  #Pod开启后,延迟10s再进行检测
  periodSeconds: 3  #检测间隔时长

可以看到该pod重启多次,然后状态成 CrashLoopBackOff,这个时候监控告警就会告出来。

 

如果是HTTP类型和tcp类型的上面链接中有介绍。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐