【问题标题】:Kubernetes pod/containers running but not listed with 'kubectl get pods'?Kubernetes pod/容器正在运行但未与“kubectl get pods”一起列出?
【发布时间】:2018-08-08 19:38:21
【问题描述】:

我有一个问题,从表面上看,似乎表明我有两个部署在我的 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 不存在的响应……但它必须存在!它正在发送实时数据!

【问题讨论】:

  • 如果您可以 ssh 到节点上,您可以执行“docker ps”来查看每个节点上运行的容器。
  • 你检查了所有的命名空间吗?尝试获取 pods --all-namespaces

标签: kubernetes kubectl telegraf


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 2022-01-27
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多