我是k8s系统的初学者。
我想检查calico节点的准备情况,所以我向节点发送了一个命令,如下所示。
$kubectl exec calico-node-d4tzk -n kube-system -- /bin/calico-node -felix-ready
但是什么也没有返回。我检查了节点的日志,但也没有关于该命令的日志。
我想知道什么都不返回意味着felix已经准备好了。
发布于 2020-11-05 09:52:35
我自己找到了答案,但我不确定它是否正确。
在projectcaclico/node/cmd/calico-node/main.go Line 98中,有一些关于检查活动和就绪状态的命令。
if *felixLive || *birdReady || *bird6Ready || *felixReady || *birdLive || *bird6Live {
health.Run(*birdReady, *bird6Ready, *felixReady, *felixLive, *birdLive, *bird6Live, *thresholdTime)
os.Exit(0)
}然后我研究了Run()函数。在那里我找到了code about 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。这就是为什么我认为不返回意味着felix已经准备好了。
https://stackoverflow.com/questions/64657639
复制相似问题