1. 程式人生 > 其它 >K8S健康檢查--探針

K8S健康檢查--探針

技術標籤:docker+k8s

參考連結

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型別的上面連結中有介紹。