in source/compute_plane/python/lambda/drainer/k8s_utils.py [0:0]
def evict_pods(api, pods):
remaining = []
for pod in pods:
logger.info('Evicting pod {} in namespace {}'.format(pod.metadata.name, pod.metadata.namespace))
body = {
'apiVersion': 'policy/v1beta1',
'kind': 'Eviction',
'deleteOptions': {},
'metadata': {
'name': pod.metadata.name,
'namespace': pod.metadata.namespace
}
}
try:
api.create_namespaced_pod_eviction(pod.metadata.name, pod.metadata.namespace, body)
except ApiException as err:
if err.status == 429:
remaining.append(pod)
logger.warning("Pod {}/{} could not be evicted due to disruption budget. Will retry.".format(
pod.metadata.namespace, pod.metadata.name))
else:
logger.exception("Unexpected error adding eviction for pod {}/{}".format(
pod.metadata.namespace, pod.metadata.name))
except Exception:
logger.exception("Unexpected error adding eviction for pod {}/{}".format(
pod.metadata.namespace, pod.metadata.name))
return remaining