def schedule_pod(v1_client, name, node, namespace="default"): target = V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = node meta = V1ObjectMeta() meta.name = name body = V1Binding(api_version=None, kind=None, metadata=meta, target=target) logger.info("Binding Pod: %s to Node: %s", name, node) return v1_client.create_namespaced_pod_binding(name, namespace, body)
def assign_pod_to_node(pod: V1Pod, node: V1Node): print("Scheduling %s on %s" % (pod.metadata.name, node.metadata.name)) binding = V1Binding(api_version="v1", kind="Binding", metadata=V1ObjectMeta(name=pod.metadata.name), target=V1ObjectReference(api_version="v1", kind="Node", name=node.metadata.name)) client.CoreV1Api().create_namespaced_pod_binding(pod.metadata.name, "default", binding) print("Scheduled %s on %s" % (pod.metadata.name, node.metadata.name)) notify_binding(pod, node)
def assign_pod_to_node(self, pod: V1Pod, node: V1Node): """ Assign a pod to a node :param pod: type V1Pod to schedule :param node: type V1Node """ info("Scheduling %s on %s" % (pod.metadata.name, node.metadata.name)) binding = V1Binding(api_version="v1", kind="Binding", metadata=V1ObjectMeta(name=pod.metadata.name), target=V1ObjectReference(api_version="v1", kind="Node", name=node.metadata.name)) try: self.api_k8s.create_namespaced_pod_binding(pod.metadata.name, "default", binding) info("Scheduled %s on %s" % (pod.metadata.name, node.metadata.name)) self.notify_binding(pod, node) except Exception: traceback.print_exc() info("pod %s is already assigned" % pod.metadata.name)