in perf-tools/framework/node_analyzer.go [46:71]
func (na *NodeAnalyzer) InitNodeInfosBeforeTesting() error {
// get resource map for schedulable nodes
nodes, err := na.kubeClient.GetNodes(&metav1.ListOptions{LabelSelector: na.nodeSelector})
if nodes == nil || err != nil {
return err
}
if len(nodes.Items) == 0 {
return fmt.Errorf("no selected nodes in k8s cluster, nodeSelector=%s", na.nodeSelector)
}
na.allocatableNodes = make(map[string]*NodeInfo)
for _, nodeItem := range nodes.Items {
if nodeItem.Spec.Unschedulable {
utils.Logger.Debug("skip unschedulable node", zap.String("nodeID", nodeItem.Name))
continue
}
if !IsNodeReady(&nodeItem) {
utils.Logger.Debug("skip not-ready node", zap.String("nodeID", nodeItem.Name))
continue
}
// allocatable resource is the upper limit of allocated resource for pods
capacityRes := ParseResourceFromResourceList(&nodeItem.Status.Allocatable)
nodeInfo := NewNodeInfo(nodeItem.Name, capacityRes, resources.NewResource())
na.allocatableNodes[nodeItem.Name] = nodeInfo
}
return nil
}