1

我有一个问题,从表面上看,似乎表明我有两个部署在我的 kube 集群中并行运行,但“kubectl get pods”只显示一个部署。

我的部署由一个带有两个容器的 pod 组成。其中一个容器运行一个创建 http API 端点的 golang 应用程序,另一个容器运行 Telegraf 从 API 端点读取指标并将它们推送到 InfluxDB。在将数据写入 Influx 时,我使用源主机将数据标记为 pod 的名称。我使用 Grafana 绘制指标,我可以清楚地看到来自两个主机的传入流数据(例如,我可以将“WHERE host=”查询子句设置为“application-pod-name-231620957-7n32f”和“application-pod -name-1931165991-x154c")。

基于上述情况,我相当确定 Pod 的两个部署正在运行,每个部署都有两个容器(一个提供应用程序指标,另一个使用 telegraf 向 InfluxDB 发送指标)。

但是,kube 似乎认为其中一个部署不存在。如前所述,“kubectl get pods”不会以任何形状或形式显示第二个 pod 名称。只有其中之一。

有人见过这个吗?有关进一步故障排除的任何想法?我尝试使用 pod 名称(我在 telegraf 中的名称)使用 kubectl 查询更多信息,但总是得到 pod 不存在的响应......但它必须存在!它正在发送实时数据!

4

1 回答 1

0

我们在集群中的一个节点上遇到了问题。具体来说,该节点遇到 GC 故障,并且从该节点到集群的通信中断。由于这些故障,我们团队中的某个人从集群内对节点执行了“kubectl 删除”。通过这样做,节点继续运行,但节点上运行的 kubelet 仍然处于损坏状态,因此节点无法将自身重新自动注册到集群中。该节点恰好正在运行第二个 pod,并且该节点上运行的 pod 继续运行而没有问题。在我们的例子中,节点在 AWS 上运行,在这种情况下,避免这种情况的方法是从 AWS 控制台或 AWS API 重新启动节点。

于 2018-03-01T07:12:49.540 回答