使用Kubernetes client-go如何以编程方式检查Node是否为“就绪”?

时间:2019-08-04 02:18:26

标签: kubernetes client-go

似乎我可能需要遍历v1.Node->NodeStatus->Conditions[]切片并按过渡时间进行排序,然后确定最近的计时条件是否为NodeConditionType == "Ready"。我想知道是否有更好的方法,或者该方法是否有缺陷?

2 个答案:

答案 0 :(得分:3)

您在寻找正确的位置,但是条件可能无法完全按照您的问题所暗示的那样工作。条件不应视为基于时间的事件,而应视为当前状态。引用API conventions documentation

  

条件表示对象状态的最新可用观测值。

因此,不必查找最新的条件,而是针对您要观察的状态类型寻找 条件。应该只有一个NodeConditionTypeReady的人,但是您需要检查.Status上的NodeCondition字段以确认其值是否为True,{ {1}}或False

答案 1 :(得分:0)

在我的情况下,我启用了TaintBasedEvictions and TaintNodesByCondition功能门,并且k8s节点控制器会在节点上自动添加一些污点(例如node.kubernetes.io/not-readynode.kubernetes.io/unreachable),我只需要监视节点,然后检查异味。