问题标签 [kubernetes-health-check]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
623 浏览

kubernetes - How to roll kubernetes updates in intervals

We have a case where we need to make sure that pods in k8s have the latest version possible. What is the best way to accomplish this?

First idea was to kill the pod after some point, knowing that the new ones will come up pulling the latest image. Here is what we found so far. Still don't know how to do it.

Another idea is having rolling-update executed in intervals, like every 5 hours. Is there a way to do this?

0 投票
0 回答
1806 浏览

kubernetes - Kubernetes pod 一次全部失败

我有一个在 kubernetes (GKE) 上运行的非常简单的烧瓶应用程序。Pod 获得了相当多的流量(60req/s +-),它们在一个至少有 4 个活动和最多 10 个的自动缩放组下运行。

每 4-5 小时,活性探测开始失败,所有 pod 都会重新启动。我有时会发现我的 pod 在一个晚上重新启动了 11-12 次。当我描述豆荚时,我得到了同样的错误:

Liveness probe failed: Get http://10.12.5.23:5000/_status/healthz/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

所有 pod 的重启次数都相同,因此这不是负载问题(而且我也有自动缩放功能)。

_status/healthz/端点非常简单:

我在这个应用程序上有另一条路由连接到 mysql 并验证一些数据。我将相同的应用程序分布在 digitalocean 液滴上,在更高的负载下运行了几个月,没有出现任何问题。

我似乎无法找出为什么活动检查开始失败,并且我的 pod 会重新启动。

分配的资源也很不错,并且与我在 digitalocean droplets 上的资源非常接近:

我有相同的 pod 运行100mCPU 限制和900m. 同样的结果,每隔几个小时,所有 pod 都会重新启动。

活跃度设置:

更新:添加了Readiness探针,增加了 CPU = 相同的结果,4 个 pod 中的每一个都重启了 7 次。

0 投票
1 回答
759 浏览

kubernetes - Kubernetes 推出在切换 Web pod 时出现 503 错误

我正在运行这个命令:

工作正常。但是有一个10秒的窗口,网站是503,我是个完美主义者。

如何配置 kubernetes 在切换入口之前等待图像可用?

我从这里使用 nginx 入口控制器:

这个用于 Web 服务器的 yaml:

Docker 映像基于node.js 服务器映像

/healthz是网络服务器中的一个文件,它返回ok 我认为活性探测将确保服务器在切换到新版本之前已启动并准备就绪。

提前致谢!

0 投票
2 回答
2014 浏览

http - 在启用 keep-alive 的情况下修复 kubernetes 服务重新部署错误

我们有一个运行在三台机器上的 Kubernetes 服务。我们集群内部和外部的客户端都通过启用了 keep-alive 选项的 http 与该服务通信。在服务部署期间,退出的 pod 有一个就绪检查,当关闭开始时开始失败,并从服务端点列表中适当地删除,但是它们仍然接收流量并且一些请求失败,因为容器将突然退出。我们认为这是因为保持连接允许客户端重新使用在主机就绪时建立的这些连接。是否应该遵循一系列步骤来确保我们不会遇到这些问题?如果可能的话,我们希望允许保持连接。

0 投票
3 回答
1965 浏览

docker - 如何在 Kubernetes 中触发 Liveness Probe 失败

我的服务 deployment.yaml 中有以下活性探针

我想测试探针实际上是否触发了 POD 重新部署,这是使其失败的最简单的方法?可能以编程方式。

更新:

更好地澄清这个问题,我不想更改应用程序中的代码,也不想暂停正在运行的容器。我想知道是否可以使用 kubernetes 或 docker 命令在运行时以某种方式阻止端点/端口。

0 投票
2 回答
11752 浏览

kubernetes - 为什么 Kubernetes Pod 进入 Terminated 状态并给出 Completed 原因和退出代码 0?

我正在努力在 Kubernetes 文档中找到任何答案。场景如下:

  • 基于 AWS 的 Kubernetes 1.4 版
  • 8 个运行 NodeJS API (Express) 的 Pod,部署为 Kubernetes 部署
  • 其中一个 pod 在深夜无故重启(没有流量、没有 CPU 峰值、没有内存压力、没有警报……)。因此,重新启动的次数会增加。
  • 日志没有显示任何异常(跑来kubectl -p查看以前的日志,那里根本没有错误)
  • 资源消耗正常,看不到任何关于 Kubernetes 将 Pod 重新调度到另一个节点或类似的事件
  • 描述 pod 会返回TERMINATED状态、返回COMPLETED原因和退出代码 0。我没有确切的输出,kubectl因为这个 pod 已经被多次替换。

pod 是 NodeJS 服务器实例,它们无法完成,它们总是在运行等待请求。

这会是 Kubernetes 内部对 pod 的重新排列吗?有什么方法可以知道什么时候发生这种情况?不应该是某处的事件说明它发生的原因吗?

更新

这只是发生在我们的产品环境中。描述有问题的 pod 的结果是:

api: Container ID: docker://7a117ed92fe36a3d2f904a882eb72c79d7ce66efa1162774ab9f0bcd39558f31 Image: 1.0.5-RC1 Image ID: docker://sha256:XXXX Ports: 9080/TCP, 9443/TCP State: Running Started: Mon, 27 Mar 2017 12:30:05 +0100 Last State: Terminated Reason: Completed Exit Code: 0 Started: Fri, 24 Mar 2017 13:32:14 +0000 Finished: Mon, 27 Mar 2017 12:29:58 +0100 Ready: True Restart Count: 1

更新 2

这是deployment.yaml使用的文件:

上述部署清单中引用的镜像的 Dockerfile:

npm startnode app.js是在端口 9080 上启动 NodeJS 服务器的常规命令的别名。

0 投票
2 回答
722 浏览

kubernetes - Kubernetes - 如何知道哪些 Minion 正在托管 Pod

我有一个 6 minion 集群,想知道在任何给定时间实际上有多少这些 minion 托管 pod。有特定的命令吗?现在我使用一个非常通用的命令。

"

任何直接命令来获取我想要的信息?

0 投票
4 回答
12178 浏览

deployment - 无法使用 kubctl delete pod 删除 pod

我想永久删除一个 pod,这样我就可以重新创建 deployment.yaml 和 derveice.yaml,所以我尝试了:

吊舱还在那里,也试过了:

并没有工作。

唯一有效的是当我设置部署replicas: 0然后应用它时,但是当我尝试创建新部署时,我得到:

服务器出错:创建“myService/deployment.yaml”时出错:deployments.extensions“myService”已经存在

0 投票
3 回答
5814 浏览

kubernetes - 为 Kubernetes 探针提供多个健康检查 URL

我正在使用容器探测器来检查在 kubernetes pod 内容器内运行的应用程序的运行状况。现在我的示例 pod 配置看起来像,

就我而言,我需要监视同一个容器的两个端口。80443。但是我找不到在配置文件中为同一个容器提供两个端口的方法。有没有其他方法可以做到这一点?

0 投票
1 回答
36371 浏览

docker - 使用 /healthz 进行应用程序健康检查的约定从何而来?

在 Kubernetes/Docker 生态系统中,有一个惯例是/healthz用作应用程序的健康检查端点。

“healthz”这个名字是从哪里来的,这个名字有什么特殊的语义吗?