為你的docker容器增加一個健康檢查機制


1.健康檢查

在分布式系統中,經常需要利用健康檢查機制來檢查服務的可用性,防止其他服務調用時出現異常。自 1.12 版本之后,Docker 引入了原生的健康檢查實現。

如何給Docke配置原生健康檢查能力,在寫dockerfile的時候,通過HEALTHCHECK指令就可以了

2.dockerfile如下:

FROM nginx:1.13

ADD test.sh /opt/test.sh

HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD /bin/bash /opt/test.sh

3.腳本如下:

vi /opt/test.sh

#!/bin/bash

cat /var/run/nginx.pid

if [ $? == 0 ];then

        echo 0

        exit 0

else

        echo 1

        exit 1

fi 

4.指令分析:

HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD /bin/bash /opt/test.sh

--interval 代表間隔,每隔10秒執行一次腳本

--timeout 腳本執行超時時間

--retries 腳本失敗次數,3次失敗,即30秒之后,標記容器為unhealthy

5.服務正常啟動案例:

[root@k8s-node-1 opt]# docker run -d 10.0.0.11:5000/nginx:1.13.1

be97b9980431d326d9b745ec3f605c227caa085d50529926d27562ae1e339e39

[root@k8s-node-1 opt]# docker ps -a -l

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

be97b9980431 10.0.0.11:5000/nginx:1.13.1 "nginx -g 'daemon off" 4 seconds ago Up 3 seconds (health: starting) 80/tcp pensive_chandrasekhar

[root@k8s-node-1 opt]# docker ps -a -l

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

be97b9980431 10.0.0.11:5000/nginx:1.13.1 "nginx -g 'daemon off" 11 seconds ago Up 10 seconds (healthy) 80/tcp pensive_chandrasekhar

6.服務不正常啟動案例:

[root@k8s-node-1 opt]# docker run -d 10.0.0.11:5000/nginx:1.13.1 tail -f /etc/hosts

b3b0b5a280930e40753da6174f22fd014510715c8757ad43928c2833a40a516d

[root@k8s-node-1 opt]# docker ps -a -l

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b3b0b5a28093 10.0.0.11:5000/nginx:1.13.1 "tail -f /etc/hosts" 38 seconds ago Up 38 seconds (unhealthy) 80/tcp furious_poincare

7.容器死掉自動重啟案例:

[root@k8s-node-1 opt]# docker run --restart=always -d 10.0.0.11:5000/nginx:1.13.1 sleep 40

fd1017e1ce4f063e4110689ae476f2307ab0d6ce23286f64b102a949b58f657a

[root@k8s-node-1 ~]# docker ps -a -l

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

fd1017e1ce4f 10.0.0.11:5000/nginx:1.13.1 "sleep 40" 33 seconds ago Up 32 seconds (unhealthy) 80/tcp tiny_mccarthy

[root@k8s-node-1 ~]# docker ps -a -l

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

fd1017e1ce4f 10.0.0.11:5000/nginx:1.13.1 "sleep 40" 56 seconds ago Up 14 seconds (health: starting) 80/tcp tiny_mccarthy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM