File indexing completed on 2026-04-20 07:59:01
0001 from kubernetes import client, config
0002 from kubernetes.client.rest import ApiException
0003
0004 config.load_kube_config(config_file="/opt/harvester_k8s/kubeconf")
0005 namespace = ""
0006
0007 corev1 = client.CoreV1Api()
0008 batchv1 = client.BatchV1Api()
0009
0010
0011
0012 nodes_unav = []
0013 nodes_av = {}
0014
0015
0016 nodes = corev1.list_node()
0017 for node in nodes.items:
0018 print(f"Processing {node.metadata.name}")
0019 for condition in node.status.conditions:
0020 print(f"Condition: {condition.type}, status: {type(condition.status)}")
0021 if condition.type == "Ready" and condition.status == "Unknown":
0022 nodes_unav.append(node.metadata.name)
0023 elif condition.type == "Ready" and condition.status == "True":
0024 nodes_av.setdefault(node.metadata.name, [])
0025
0026 print(f"Unavailable nodes: {len(nodes_unav)}")
0027 print(f"Available nodes: {len(nodes_av.keys())}")
0028
0029
0030 pods = corev1.list_namespaced_pod(namespace=namespace)
0031 for pod in pods.items:
0032 print(pod.metadata.name)
0033 cpus = 0
0034 if pod.status.phase == "Running" and pod.spec.containers:
0035 for container in pod.spec.containers:
0036 print(container.resources.limits)
0037 if container.resources.limits and "cpu" in container.resources.limits:
0038 cpus += int(container.resources.limits["cpu"])
0039 try:
0040 nodes_av[pod.spec.node_name].append(cpus)
0041 except KeyError:
0042 pass
0043
0044 for node in nodes_av:
0045 if not sum(nodes_av[node]):
0046 print(f"{node}: occupied cpus {nodes_av[node]}")