2017-11-25 5 views
2

kubeletで起動したときに、ポッド内のコンテナの1つが起動するのがなぜ遅いのかを理解しようとしています。kubeletがdocker cliよりも遅いので、コンテナを開始するのはなぜですか?

ここにkubeletログがあります。コンテナが開始され、しかし、23秒間準備の整っていない状態のままにされています

18:49:55.000 Container image "eu.gcr.io/proj/ns/[email protected]:fff668" already present on machine 
18:49:55.000 Created container 
18:49:56.000 Started container 
18:49:56.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:49:58.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:00.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:02.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:04.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:06.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:08.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:10.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:12.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:14.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:16.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 
18:50:18.000 Readiness probe failed: cat: /tmp/healthy: No such file or directory 

最後にコンテナ実際には本当には23秒後に開始します。私はこれを知っています。なぜなら、最初の行は次のログ行を出力してから、readinessProbeの/ tmp/healthyファイルを書き込むからです。

18:50:18.000 17:50:18,572|MainThread|INFO|cli|Starting application 

しかしながら、(上記で実行されているkubeletと同じノード上で)ドッカーCLIを有する容器を開始、現在の日付を印刷し、そしてによる次のコマンドが示すように、それだけに約1秒を取るべきですコンテナを起動します。

[email protected] ~ $ date ++%Y-%m-%d %H:%M:%S.%N; docker run -it eu.gcr.io/proj/ns/[email protected]:fff668 
2017-11-25 16:37:01.188799045 
2017-11-25 16:37:02,246|MainThread|INFO|cli|Starting application 

これは私を少しナッツ運転しています!これを引き起こしている可能性のあるものについて考えてみましょう:)

+0

"kubectl"経由でのデプロイでは、スケジューリングやその他の追加プロセスがマスターノード経由で行われる必要があると確信しています。それにもかかわらず、[this one](https://kubernetes.io/docs/user-guide/docker-cli-to-kubectl/)のような単純な例の後には、私は何の違いに気づくことができません。 PODの説明やクラスタイベントの一覧表示中に追加情報がありますか? – Carlos

+0

スケジューリングはすでにこの段階で行われています。注意私は 'kubectl'ではなく' kubelet'について話しています。私はkubernetesで私の経験のいずれか前にそれに気付いたことがないので、私はこの特定のコンテナにとても困惑しています。 – MarkNS

+0

あなたのプロセスについて、Kubernetesの環境変数と組み合わせて何かがありますか? '/ tmp/healthy'が表示されるのに20秒かかるのはなぜか分かりますか? –

答えて

1

これらのコンテナの起動が遅いという問題は、起動時にPythonインタプリタのCPUが制約されていました。私は、Pythonプロセスを開始する前にdatetimeを出力するbashスクリプトを追加しました。そして、コンテナに利用可能なCPUリソースを変更すると、問題は明らかに明確になります。

cpu: 10m 

2017-12-18 08:05:46,1513584346 starting script 
2017-12-18 08:06:22,318|MainThread|INFO|cli|Application startup 

cpu: 50m 

2017-12-18 08:15:11,1513584911 starting script 
2017-12-18 08:15:27,317|MainThread|INFO|cli|Application startup 

cpu: 100m 

2017-12-18 08:07:46,1513584466 starting script 
2017-12-18 08:07:53,218|MainThread|INFO|cli|Application startup 

cpu: 150m 

2017-12-18 08:18:16,1513585096 starting script 
2017-12-18 08:18:20,730|MainThread|INFO|cli|Application startup 

cpu: 200m 

2017-12-18 08:09:14,1513584554 starting script 
2017-12-18 08:09:17,922|MainThread|INFO|cli|Application startup 

アプリケーションが実行時に約10mのCPUを消費するため、ちょっとイライラします。 https://lwn.net/Articles/730915/

+0

これはプログラミングに関するQAサイトであり、サーバー関連ではありません。あなたはServerFaultに行く。 –

関連する問題