我有一个问题,从表面上看,似乎表明我在我的kube群集中有两个并行运行的部署,但是' kubectl get pods'只显示一个部署。
我的部署由一个带有两个容器的pod组成。其中一个容器运行一个创建http API端点的golang应用程序,另一个运行Telegraf以从API端点读取指标并将它们推送到InfluxDB。将数据写入Influx时,我使用源主机标记数据作为pod的名称。我使用Grafana绘制指标,我可以清楚地看到来自两个主机的传入流数据(例如,我可以将" WHERE主机="查询子句设置为" application-pod-name- 231620957-7n32f"和" application-pod-name-1931165991-x154c")。
基于以上所述,我非常确定pod的两个部署正在运行,每个部署都有两个容器(一个提供应用程序指标,另一个带telegraf发送指标到InfluxDB)。
但是,kube似乎认为其中一个部署并不存在。如上所述," kubectl获得pods"不以任何形式或形式显示第二个广告连播名称。只有其中一个。
有没有人见过这个?有关进一步故障排除的想法我尝试使用pod名称(我在telegraf中)使用kubectl查询更多信息,但始终得到pod不存在的响应......但它必须存在!它正在发送实时数据!
答案 0 :(得分:0)
我们遇到了群集中节点的问题。具体而言,该节点遇到GC故障,并且该节点与群集的通信中断。由于这些失败,我们团队中的某个人在群集内的节点上执行了“kubectl delete”。通过这样做,节点继续运行,但节点上运行的kubelet仍然处于中断状态,因此节点无法将自身重新自动注册到集群中。该节点碰巧正在运行第二个pod,并且节点上运行的pod继续运行而没有问题。在我们的示例中,节点在AWS上运行,在这种情况下,避免这种情况的方法是从AWS控制台或AWS API重新启动节点。