Gcloud kubernetes / docker deploy工作但10分钟后停止响应

时间:2015-11-10 06:12:28

标签: ruby-on-rails docker google-cloud-platform kubernetes google-kubernetes-engine

所以我已经在谷歌容器引擎上进行了部署并遇到了一个奇怪的行为,我真的不知道如何调试。我正在使用docker和kubernetes在rails应用程序上部署ruby。

我基本上遵循本教程: https://cloud.google.com/container-engine/docs/tutorials/hello-node#step_2_create_a_docker_container_image跳过旋转的复制品部分,它可以工作。我可以在构建/部署后转到外部IP,我的应用程序按照预期的方式运行。然而,在10分钟左右后停止。请求永远旋转。

我发现日志文件相对无益,只看到以下会提示:

{
"log": "2015/11/10 05:35:18 Worker running nslookup kubernetes.default.svc.cluster.local localhost >/dev/null\n",
"stream": "stderr"
}

{
"log": "2015/11/10 05:35:19 Client ip xx.xxx.x.x:xxxxx requesting    /healthz probe servicing cmd nslookup kubernetes.default.svc.cluster.local     localhost >/dev/null\n",
"stream": "stderr"
}

我已经浏览了此页面上的大部分调试建议: https://cloud.google.com/container-engine/docs/debugging/

kubectl记录$ {pod}:

[2015-11-10 05:07:44] INFO  WEBrick 1.3.1
[2015-11-10 05:07:44] INFO  ruby 2.1.6 (2015-04-13) [x86_64-linux]
[2015-11-10 05:07:44] INFO  WEBrick::HTTPServer#start: pid=1 port=80

kubectl记录$ pod $ instance令人不安地返回:

Container "x" not found in Pod "x"

Dockerfile非常直接来自谷歌:

FROM google/ruby

# [START postgres-dep]
RUN apt-get update && \
apt-get install -qy --no-install-recommends libpq-dev && \
apt-get clean
# [END postgres-dep]

ENV RACK_ENV production

WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
RUN /usr/bin/bundle install --deployment --without development:test
ADD . /app
RUN bundle exec rake assets:precompile
RUN bundle exec rake db:migrate
EXPOSE 8080
ENV RACK_ENV production
CMD ["/usr/bin/bundle", "exec", "rackup", "-p", "80", "/app/config.ru", "-s", "webrick", "-E", "production"]

pinging返回以下内容:

PING xxxxx (xxxxx): 56 data bytes
64 bytes from xxxx: icmp_seq=0 ttl=49 time=48.462 ms
64 bytes from xxxx: icmp_seq=1 ttl=49 time=48.177 ms
64 bytes from 1xxxx: icmp_seq=2 ttl=49 time=48.181 ms
64 bytes from xxxx: icmp_seq=3 ttl=49 time=48.240 ms
64 bytes from 1xxxxx: icmp_seq=4 ttl=49 time=48.337 ms
64 bytes from xxxxx: icmp_seq=5 ttl=49 time=48.149 ms 
64 bytes from xxxxx: icmp_seq=6 ttl=49 time=48.053 ms
64 bytes from xxxx: icmp_seq=7 ttl=49 time=47.958 ms
64 bytes from xxxxx: icmp_seq=8 ttl=49 time=48.137 ms

延迟看起来很糟糕。永远它确实指向死亡的红色轨道屏幕'

问题:   我的应用程序日志在哪里?我没有看到开发人员控制台中的任何轨道,也无法通过ssh找到它们。我有点认为它是一个平衡器/ pod配置问题,但无论如何都会很高兴知道。   为什么它最初有效并且在一段时间后停止运行?当所有内容都显示没有关键日志的绿灯时,我在哪里开始解决此类行为?   滚动更新(https://cloud.google.com/container-engine/docs/rolling-updates)是否重新部署代码更改的过程而不是上下旋转/重新创建所有内容? 提前致谢

1 个答案:

答案 0 :(得分:0)

  

我的应用程序日志在哪里?

kubectl logs将获取写入stdout / stderr的所有日志。如果您的应用程序登录到文件,那么您需要直接查看该文件以查看日志。尝试kubectl exec在你的pod中获取一个shell,然后使用你最喜欢的工具(cat,grep,less等)来查看日志文件(如果你还没有看到一些,请查看this blog post整齐地使用kubectl,包括kubectl exec)的一个例子。

  

为什么它最初起作用并且在一段时间后停止运作?

这可能取决于您的申请。获得日志后,您应该能够分辨出来。

  

rolling updates重新部署代码的过程是否会在不上下旋转/重新创建所有内容的情况下进行更改?

相关问题