gpt4 book ai didi

kubernetes - 如何识别 Kubernetes 中的可调度节点

转载 作者:行者123 更新时间:2023-12-04 18:59:27 24 4
gpt4 key购买 nike

我想(以编程方式)获取我的 kubernetes 集群中所有可调度节点的列表。

通过查看 .spec.unschedulable,我很确定这曾经是可能的。在 kubectl get nodes 的完整输出中(使用 JSON 或模板输出),但现在看来此信息在 scheduler.alpha.kubernetes.io/taints 中键,它更难解析,而且感觉不是正确的地方。

有没有其他方法可以找到这些信息?我错过了一些明显的东西吗?我目前使用的是 1.5.1 版。

更新:我几乎可以通过一些 Go 模板到达那里:

$ kubectl get nodes -o go-template='{{range .items}}{{with $x := index .metadata.annotations "scheduler.alpha.kubernetes.io/taints"}}{{.}}{{end}}{{end}}'
[{"key":"dedicated","value":"master","effect":"NoSchedule"}]

但这给我留下了无法在模板中解析的一团 JSON,我仍然必须反转结果并获取节点名称。

更新 2:显然不可调度的节点应该有 .spec.unschedulable放。情况似乎并非总是如此。不确定这是由于我的错误还是误解。

最佳答案

虽然参加聚会已经很晚了,但我今天需要一些类似的东西来确定 pod 的调度何时真正开始成功:

kubectl get nodes -o jsonpath="{range .items[*]}{.metadata.name} {.spec.taints[?(@.effect=='NoSchedule')].effect}{\"\n\"}{end}" | awk 'NF==1 {print $0}'

这本质上只是一个比 OP 发布的模板更紧凑的模板,该模板通过 filterung 使用 awk 完成反演。 .

编辑:在尝试使用我之前发布的命令后,我意识到它只能在单个 master 的边缘情况下工作。因此,我扩展了命令以首先打印所有节点名称以及 NoSchedule污点(如果存在),然后使用 awk 删除多于一列的所有行(这就是 NF==1 所做的)。

关于kubernetes - 如何识别 Kubernetes 中的可调度节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41348531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com