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 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。这就是为什么我认为没有回报意味着费利克斯已经准备好了。