Gcloud kubernetes/docker 部署工作但在 10 分钟后停止响应
Gcloud kubernetes/docker deploy works but stops responding after 10 minutes
所以我已经在 google 容器引擎上进行了部署,并且 运行 出现了一种我真的不知道如何调试的奇怪行为。我正在使用 docker 和 kubernetes 在 rails 应用程序上部署 ruby。
我基本上是在学习这个教程:
https://cloud.google.com/container-engine/docs/tutorials/hello-node#step_2_create_a_docker_container_image 跳过旋转副本部分并且它有效。我可以在 building/deploying 之后转到外部 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 returns:
Container "x" not found in Pod "x"
Dockerfile 几乎直接来自 google:
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"]
ping returns 以下内容:
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
延迟看起来很糟糕。永远之后它确实指向红色rails死亡屏幕'
问题:
我该死的应用程序日志在哪里?我在开发人员控制台中没有看到任何 rails 之类的东西,也无法通过 ssh 找到它们。我有点假设这是一个 balancer/pod 配置问题,但无论如何知道它会很高兴。
为什么它一开始可以工作,一段时间后就停止工作了?当一切都显示绿灯且没有关键日志时,我应该从哪里开始对此类行为进行故障排除?
滚动更新(https://cloud.google.com/container-engine/docs/rolling-updates)是重新部署代码更改的过程,而不需要旋转和 down/re 创建一切吗?
提前致谢
Where are my darn application logs?
kubectl logs
将抓取写入 stdout / stderr 的所有日志。如果您的应用程序记录到一个文件,那么您将需要直接查看该文件以查看您的日志。尝试 kubectl exec
在您的 pod 中获取 shell,然后使用您最喜欢的工具(cat、grep、less 等)查看日志文件(如果您还没有,请查看 this blog post已经看到 kubectl 的一些简洁用法,包括 kubectl exec
).
的示例
Why does it work initially and after a while stop functioning?
这可能取决于您的应用程序。获得日志后,您应该能够分辨出来。
Are rolling updates the process for re-deploying code changes without spinning up and down/re creating everything?
是的。
所以我已经在 google 容器引擎上进行了部署,并且 运行 出现了一种我真的不知道如何调试的奇怪行为。我正在使用 docker 和 kubernetes 在 rails 应用程序上部署 ruby。
我基本上是在学习这个教程: https://cloud.google.com/container-engine/docs/tutorials/hello-node#step_2_create_a_docker_container_image 跳过旋转副本部分并且它有效。我可以在 building/deploying 之后转到外部 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 returns:
Container "x" not found in Pod "x"
Dockerfile 几乎直接来自 google:
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"]
ping returns 以下内容:
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
延迟看起来很糟糕。永远之后它确实指向红色rails死亡屏幕'
问题:
我该死的应用程序日志在哪里?我在开发人员控制台中没有看到任何 rails 之类的东西,也无法通过 ssh 找到它们。我有点假设这是一个 balancer/pod 配置问题,但无论如何知道它会很高兴。
为什么它一开始可以工作,一段时间后就停止工作了?当一切都显示绿灯且没有关键日志时,我应该从哪里开始对此类行为进行故障排除?
滚动更新(https://cloud.google.com/container-engine/docs/rolling-updates)是重新部署代码更改的过程,而不需要旋转和 down/re 创建一切吗?
提前致谢
Where are my darn application logs?
kubectl logs
将抓取写入 stdout / stderr 的所有日志。如果您的应用程序记录到一个文件,那么您将需要直接查看该文件以查看您的日志。尝试 kubectl exec
在您的 pod 中获取 shell,然后使用您最喜欢的工具(cat、grep、less 等)查看日志文件(如果您还没有,请查看 this blog post已经看到 kubectl 的一些简洁用法,包括 kubectl exec
).
Why does it work initially and after a while stop functioning?
这可能取决于您的应用程序。获得日志后,您应该能够分辨出来。
Are rolling updates the process for re-deploying code changes without spinning up and down/re creating everything?
是的。