快速重启pod

Chr*_*jam 4 kubernetes

我最近一直在试验kubernetes,我一直在尝试通过一个复制控制器测试pod中的故障转移,其中容器一旦使用就会崩溃(从而导致重启).

我已经为此调整了bashttpd项目:https: //github.com/Chronojam/bashttpd

(我在哪里设置它以便它提供容器的主机名,然后退出)

这很好用,除了重启对于我要做的事情来说要慢得多,因为它适用于前几个请求,然后停止一段时间 - 然后在重新启动pod时再次开始工作.(理想情况下,id在访问服务时看不到任何中断).

我认为(但不确定)这里提到的备份延迟应该归咎于:https: //github.com/kubernetes/kubernetes/blob/master/docs/user-guide/pod-states.md#restartpolicy

一些输出:

#] kubectl get pods
NAME                         READY     STATUS    RESTARTS   AGE
chronojam-blog-a23ak         1/1       Running   0          6h
chronojam-blog-abhh7         1/1       Running   0          6h
chronojam-serve-once-1cwmb   1/1       Running   7          4h
chronojam-serve-once-46jck   1/1       Running   7          4h
chronojam-serve-once-j8uyc   1/1       Running   3          4h
chronojam-serve-once-r8pi4   1/1       Running   7          4h
chronojam-serve-once-xhbkd   1/1       Running   4          4h
chronojam-serve-once-yb9hc   1/1       Running   7          4h
chronojam-tactics-is1go      1/1       Running   0          5h
chronojam-tactics-tqm8c      1/1       Running   0          5h
#] curl http://serve-once.chronojam.co.uk
<h3> chronojam-serve-once-j8uyc </h3>
#] curl http://serve-once.chronojam.co.uk
<h3> chronojam-serve-once-r8pi4 </h3>
#] curl http://serve-once.chronojam.co.uk
<h3> chronojam-serve-once-yb9hc </h3>
#] curl http://serve-once.chronojam.co.uk
<h3> chronojam-serve-once-46jck </h3>
#] curl http://serve-once.chronojam.co.uk
#] curl http://serve-once.chronojam.co.uk
Run Code Online (Sandbox Code Playgroud)

你还会注意到即使在那里应该有2个仍然健康的豆荚,它会在第4天后停止返回.

所以我的问题有两个:

1)

我可以调整退避延迟吗?

2)

为什么我的服务不将我的请求发送到健康容器?

观察:

我认为可能是网络服务器本身无法快速开始提供请求,因此kubernetes认为这些pod是健康的,并在那里发送请求(但由于流程尚未开始,所以什么也没回来?)

小智 7

我提出了一个问题来记录推荐的做法.我在问题中列出了方法的草图:

https://github.com/kubernetes/kubernetes/issues/20473

  • 确保pod设置了非零的terminationGracePeriodSeconds
  • 在pod的主服务容器上配置readinessProbe
  • 在应用程序中处理SIGTERM:使readinessProbe失败但继续*来处理正常请求而不退出
  • 将maxUnavailable和/或maxSurge设置得足够大,以确保Deployment API规范中有足够的服务实例(1.2中提供)

容器重启,特别是当他们拉图像时,系统相当昂贵.Kubelet支持重新启动崩溃的容器,以便使用DOSing docker,注册表,apiserver等优雅地降级.