Skip to content

Instantly share code, notes, and snippets.

@bchess
Last active March 6, 2019 21:38
Show Gist options
  • Save bchess/b4adb0a3289feb979e954422834e6800 to your computer and use it in GitHub Desktop.
Save bchess/b4adb0a3289feb979e954422834e6800 to your computer and use it in GitHub Desktop.
""" Emit all nodes (with an optional label selector) that have no pods running except for daemonsets
"""
import sys
from kubernetes import client, config
config.load_kube_config()
node_label_selector = ''
if len(sys.argv) == 2:
node_label_selector = sys.argv[1]
else:
assert len(sys.argv) == 1
v1 = client.CoreV1Api()
response = v1.list_node(label_selector=node_label_selector)
for node in response.items:
field_selector = f'spec.nodeName={node.metadata.name},status.phase!=Succeeded'
pods = v1.list_pod_for_all_namespaces(field_selector=field_selector)
for pod in pods.items:
owner_references = pod.metadata.owner_references
if owner_references is None or len(owner_references) != 1 or owner_references[0].kind != 'DaemonSet':
break
else:
print(node.metadata.name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment