Calico节点不返回任何命令"/bin/calico-node -felix-ready"



我是k8s系统的初学者
我想检查calico节点的准备情况,所以我向节点发送了一个命令,如下所示。

$kubectl exec calico-node-d4tzk -n kube-system -- /bin/calico-node -felix-ready

但是什么也没有回来。我检查了节点的日志,但也没有关于该命令的日志
我想知道什么都不回意味着felix已经准备好了。

我自己找到了答案,但我不确定它是否正确
projectcaclico/node/cmd/calico-node/main.go第98行中有一些关于检查活跃度和准备状态的命令。

if *felixLive || *birdReady || *bird6Ready || *felixReady || *birdLive || *bird6Live {
health.Run(*birdReady, *bird6Ready, *felixReady, *felixLive, *birdLive, *bird6Live, *thresholdTime)
os.Exit(0)
}

然后我研究了Run((函数。在那里,我发现了关于felixReady的代码。

if felixReady {
g.Go(func() error {
if err := checkFelixHealth(ctx, felixReadinessEp, "readiness"); err != nil {
return fmt.Errorf("calico/node is not ready: felix is not ready: %+v", err)
}
return nil
})
}

正如您所看到的,当没有问题时,它会返回零。这就是为什么我认为没有回归意味着费利克斯已经准备好了。

最新更新