docker容器の健康状態監視機能healthcheck
3481 ワード
ブログは学習ノートとして記録されており、理解、表現ミスがあれば、指摘を歓迎します.
healthcheckはdocker 1です.12リリースで導入された新しい機能は、容器の健康状態のモニタリングに使用されます.
一時的にk 8 sはdockerのhealthcheck機能をサポートせず、k 8 sはそれ以前から提供されていたlivenesとreadiness機能によってhealthcheckを実現し、dockerはhealthcheck機能を導入し、k 8 sにも学習されていると推定される.
dockerのhealthcheck
オプションの設定: 説明:この期間のプローブに失敗した場合、最大再試行回数は計上されません.ただし、健康診断が起動中に成功した場合、容器が起動したとみなされ、連続した失敗はすべて最大再試行回数に計上されます. になる.
書式:HEALTHCHECK[オプション]CMD(shell形式とexec形式に分かれます).
複数のコマンドがある場合は、最後のコマンドが有効になります.
出力:healthcheckコマンドの実行結果は次のとおりです. 0:success-the container is healthy and ready for use、容器の正常な運行、状態の健康 1:unhealthy-the container is not working correctly,コンテナ起動異常 :reserved-do not use this exit code、 未使用
栗を挙げます.
curlでwebサービスが正常かどうかを判断し、dockerfileでhealthcheckを定義します.
コンテナを運転したばかりの場合、コンテナ状態はhealth:starting
数秒後には状態がhealthyになります
健康命令の出力結果は健康状態に格納され、docker inspectで表示できます.eg:
REF:
https://docker_practice.gitee.io/image/dockerfile/healthcheck.html
https://docs.docker.com/engine/reference/builder/
healthcheckはdocker 1です.12リリースで導入された新しい機能は、容器の健康状態のモニタリングに使用されます.
一時的にk 8 sはdockerのhealthcheck機能をサポートせず、k 8 sはそれ以前から提供されていたlivenesとreadiness機能によってhealthcheckを実現し、dockerはhealthcheck機能を導入し、k 8 sにも学習されていると推定される.
dockerのhealthcheck
オプションの設定:
--interval=DURATION
(default:30s
)、間隔--timeout=DURATION
(default:30s
)、タイムアウト--start-period=DURATION
(default:0s
)、初期化時間--retries=N
(default:3
)は、連続して所定回数失敗すると容器状態がunhealthy 書式:HEALTHCHECK[オプション]CMD(shell形式とexec形式に分かれます).
複数のコマンドがある場合は、最後のコマンドが有効になります.
出力:healthcheckコマンドの実行結果は次のとおりです.
栗を挙げます.
curlでwebサービスが正常かどうかを判断し、dockerfileでhealthcheckを定義します.
FROM nginx
RUN apt-get update && apt-get
install -y curl && rm -rf /var/lib/apt/lists/*
HEALTHCHECK --interval=5s --timeout=3s \
CMD curl -fs http://localhost/ || exit 1
コンテナを運転したばかりの場合、コンテナ状態はhealth:starting
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03e28eb00bd0 myweb:v1 "nginx -g 'daemon off" 3 seconds ago Up 2 seconds (health: starting) 80/tcp, 443/tcp web
数秒後には状態がhealthyになります
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03e28eb00bd0 myweb:v1 "nginx -g 'daemon off" 18 seconds ago Up 16 seconds (healthy) 80/tcp, 443/tcp web
健康命令の出力結果は健康状態に格納され、docker inspectで表示できます.eg:
$ docker inspect --format '{{json .State.Health}}' web | python -m json.tool
# :
{
"FailingStreak": 0,
"Log": [
{
"End": "2016-11-25T14:35:37.940957051Z",
"ExitCode": 0,
"Output": "
Welcome to
nginx!
Welcome to
nginx!
If you see this page, the nginx web server is
successfully installed and
working. Further configuration is
required.
For online documentation and support please
refer to
nginx.org.
Commercial
support is available at
nginx.com.
Thank
you for using nginx.
",
"Start":
"2016-11-25T14:35:37.780192565Z"
}
],
"Status": "healthy"
}
REF:
https://docker_practice.gitee.io/image/dockerfile/healthcheck.html
https://docs.docker.com/engine/reference/builder/