问题描述
我是k8s系统的初学者。
我想检查calico节点的就绪状态,因此我向该节点发送了一条命令,如下所示。
$kubectl exec calico-node-d4tzk -n kube-system -- /bin/calico-node -Felix-ready
但是什么也没有返回。我检查了该节点的日志,但也没有有关该命令的日志。
我不知道什么都不返回就意味着Felix已经准备好了。
解决方法
我为自己找到了答案,但不确定是否正确。
在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。这就是为什么我认为没有回报意味着费利克斯已经准备好了。