如何通过客户端获取Kubernetes节点的状态?
How to get the status of Kubernetes nodes via the client?
我想通过 go 客户端获取 Kubernetes 中的节点列表及其状态。我在用
clientset.CoreV1().Nodes().List(metav1.ListOptions{})
并且我能够获取节点列表和一些信息,例如节点标签,但我在那里找不到 status.phase
(对于 pods 给我状态)。
我搜索并找到了 NodeCondition
(https://github.com/kubernetes/api/blob/9b64426eca51a74faa7cc9bd732a533d339c69c2/core/v1/types.go#L4911),但我找不到任何关于如何使用它的文档,而且我自己也无法让它工作。有人可以告诉我如何通过客户端获取节点的状态吗?
您可以通过node.Status.Condition
访问它
nodes, _ := client.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
for _, node := range nodes.Items {
fmt.Printf("%s\n", node.Name)
for _, condition := range node.Status.Conditions {
fmt.Printf("\t%s: %s\n", condition.Type, condition.Status)
}
}
打印:
dev-master-01
NetworkUnavailable: False
MemoryPressure: False
DiskPressure: False
PIDPressure: False
Ready: True
dev-master-02
NetworkUnavailable: False
MemoryPressure: False
DiskPressure: False
PIDPressure: False
Ready: True
dev-master-03
NetworkUnavailable: False
MemoryPressure: False
DiskPressure: False
PIDPressure: False
Ready: True
我想通过 go 客户端获取 Kubernetes 中的节点列表及其状态。我在用
clientset.CoreV1().Nodes().List(metav1.ListOptions{})
并且我能够获取节点列表和一些信息,例如节点标签,但我在那里找不到 status.phase
(对于 pods 给我状态)。
我搜索并找到了 NodeCondition
(https://github.com/kubernetes/api/blob/9b64426eca51a74faa7cc9bd732a533d339c69c2/core/v1/types.go#L4911),但我找不到任何关于如何使用它的文档,而且我自己也无法让它工作。有人可以告诉我如何通过客户端获取节点的状态吗?
您可以通过node.Status.Condition
nodes, _ := client.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
for _, node := range nodes.Items {
fmt.Printf("%s\n", node.Name)
for _, condition := range node.Status.Conditions {
fmt.Printf("\t%s: %s\n", condition.Type, condition.Status)
}
}
打印:
dev-master-01
NetworkUnavailable: False
MemoryPressure: False
DiskPressure: False
PIDPressure: False
Ready: True
dev-master-02
NetworkUnavailable: False
MemoryPressure: False
DiskPressure: False
PIDPressure: False
Ready: True
dev-master-03
NetworkUnavailable: False
MemoryPressure: False
DiskPressure: False
PIDPressure: False
Ready: True