Используя клиент python, я написал функцию для удаления всех модулей в узле. Как я могу отслеживать / наблюдать за всеми стручками, которые будут полностью выселены?
Я использую метод create_namespaced_pod_eviction для удаления всех модулей на одном узле. Пока это работает, он не ждет завершения процесса, прежде чем продолжить. Мне нужно завершить процесс выселения на 100%, прежде чем продолжать в моем сценарии. Как я могу контролировать состояние этого процесса? Как и в kubectl, я бы хотел, чтобы моя функция ожидала выселения каждого модуля перед возвращением.
# passes list of pods to evict function
def drain_node(self):
print("Draining node", self._node_name)
self.cordon_node()
pods = self._get_pods()
response = []
for pod in pods:
response.append(self._evict_pod(pod))
return response
# calls the eviction api on each pod
def _evict_pod(self, pod, delete_options=None):
name = pod.metadata.name
namespace = pod.metadata.namespace
body = client.V1beta1Eviction(metadata=client.V1ObjectMeta(name=name, namespace=namespace))
response = self._api.create_namespaced_pod_eviction(name, namespace, body)
return response
# gets list of pods to evict
def _get_pods(self):
all_pods = self._api.list_pod_for_all_namespaces(watch=True, field_selector='spec.nodeName=' + self._node_name)
user_pods = [p for p in all_pods.items
if (p.metadata.namespace != 'kube-system')]
return user_pods