use of io.fabric8.kubernetes.client.dsl.internal.NodeMetricOperationsImpl in project Taier by DTStack.
the class AbstractK8sResourceInfo method getResource.
public void getResource(KubernetesClient kubernetesClient) {
List<Node> nodes = kubernetesClient.nodes().list().getItems();
Map<String, NodeStatus> nodeStatusMap = new HashMap<>(nodes.size());
for (Node node : nodes) {
nodeStatusMap.put(node.getMetadata().getName(), node.getStatus());
}
NodeMetricOperationsImpl nodeMetricOperations = kubernetesClient.top().nodes();
List<NodeMetrics> nodeMetrics = nodeMetricOperations.metrics().getItems();
for (NodeMetrics nodeMetric : nodeMetrics) {
String nodeName = nodeMetric.getMetadata().getName();
NodeStatus nodeStatus = nodeStatusMap.get(nodeName);
Map<String, Quantity> allocatable = nodeStatus.getAllocatable();
Map<String, Quantity> usage = nodeMetric.getUsage();
BigDecimal cpuAllocatable = Quantity.getAmountInBytes(allocatable.get(CPU));
BigDecimal cpuUsage = Quantity.getAmountInBytes(usage.get(CPU));
BigDecimal menAllocatable = Quantity.getAmountInBytes(allocatable.get(MEMORY));
BigDecimal menUsage = Quantity.getAmountInBytes(usage.get(MEMORY));
double freeCores = cpuAllocatable.subtract(cpuUsage).doubleValue();
double freeMem = menAllocatable.subtract(menUsage).doubleValue();
this.addNodeResource(new AbstractK8sResourceInfo.NodeResourceDetail(nodeName, cpuAllocatable.doubleValue(), cpuUsage.doubleValue(), freeCores, menAllocatable.doubleValue(), menUsage.doubleValue(), freeMem));
}
calc();
}
Aggregations