我是k8s系统的初级开发者。
我想检查 calico 节点的准备情况,所以我向节点发送了一个命令,如下所示。
$kubectl exec calico-node-d4tzk -n kube-system -- /bin/calico-node -felix-ready
但没有任何回报。我检查了节点的日志,但也没有关于该命令的日志。
我想知道什么都不返回意味着菲利克斯已经准备好了。
我是k8s系统的初级开发者。
我想检查 calico 节点的准备情况,所以我向节点发送了一个命令,如下所示。
$kubectl exec calico-node-d4tzk -n kube-system -- /bin/calico-node -felix-ready
但没有任何回报。我检查了节点的日志,但也没有关于该命令的日志。
我想知道什么都不返回意味着菲利克斯已经准备好了。
我为自己找到了答案,但我不确定它是否正确。
在projectcaclico/node/cmd/calico-node/main.go 第 98 行,有关于检查 liveness 和 readiness 的命令。
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
})
}
如您所见,它在没有问题时返回 nil。这就是为什么我认为没有回归意味着菲利克斯已经准备好了。