0

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

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

但没有任何回报。我检查了节点的日志,但也没有关于该命令的日志。
我想知道什么都不返回意味着菲利克斯已经准备好了。

4

1 回答 1

0

我为自己找到了答案,但我不确定它是否正确。
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。这就是为什么我认为没有回归意味着菲利克斯已经准备好了。

于 2020-11-05T01:52:34.897 回答