如何使用client-go或curl观察节点并通知它们是否“NotReady”?

问题描述 投票:1回答:1

如果某个节点在群集中向下并且状态变为NotReady,我是否可以使其触发某些操作?

我尝试使用client-go和curl来观看/api/v1/watch/nodes并在节点状态有any更改时获取通知。仅当节点状态从Ready更改为NotReady时,如何才能通知?

curl kubernetes
1个回答
1
投票

截至目前,无法查询特定更新。有两种方法可以实现这个:

  1. NodeStatus有一个名为lastTransitionTime的字段,用于记录字段中的更改。在您的应用程序中,您可以检查每X秒,然后将上次检查的时间与lastTransitionTime进行比较,以确定是否有更改。如果您的应用程序重新启动,则必须在启动应用程序时进行一次性检查 { "type": "Ready", "status": "True", "lastHeartbeatTime": "2017-12-27T09:52:19Z", "lastTransitionTime": "2017-12-26T14:55:49Z", "reason": "KubeletReady", "message": "kubelet is posting ready status" }
  2. 您在client-go中编写的应用程序可以维护缓存并将缓存中的值与监视事件中的值进行比较。在这种情况下,您还必须考虑在观察者服务中断时不要错过事件的方法。您可以将该状态存储在某处或使用其他机制,但这取决于您的用例的重要性。

我能找到的最接近的例子是Calico-go,其中监视网络策略的任何变化,并且在calico-etcd中完成相关的更改,以便节点上的代理可以相应地实现防火墙规则。从这一行开始,处理事件,当然你必须进一步导航堆栈! Code

© www.soinside.com 2019 - 2024. All rights reserved.