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)
예제 #2
0
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)
예제 #3
0
 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)