def _create_pod(self, **kargs): # Container pod_resource_requests = kargs["resource_requests"] pod_resource_limits = kargs["resource_limits"] pod_resource_limits = (pod_resource_limits if pod_resource_limits else pod_resource_requests) container = client.V1Container( name=kargs["pod_name"], image=kargs["image_name"], command=kargs["command"], resources=client.V1ResourceRequirements( requests=parse_resource(pod_resource_requests), limits=parse_resource(pod_resource_limits), ), args=kargs["container_args"], image_pull_policy=kargs["image_pull_policy"], env=kargs["env"], ) # Pod spec = client.V1PodSpec( containers=[container], restart_policy=kargs["restart_policy"], priority_class_name=kargs["pod_priority"], ) # Mount data path if kargs["volume"]: volume_dict = parse_volume(kargs["volume"]) volume_name = kargs["pod_name"] + "-volume" volume = client.V1Volume( name=volume_name, persistent_volume_claim=V1PersistentVolumeClaimVolumeSource( claim_name=volume_dict["claim_name"], read_only=False), ) spec.volumes = [volume] container.volume_mounts = [ client.V1VolumeMount(name=volume_name, mount_path=volume_dict["mount_path"]) ] pod = client.V1Pod( spec=spec, metadata=client.V1ObjectMeta( name=kargs["pod_name"], labels={ "app": ELASTICDL_APP_NAME, ELASTICDL_JOB_KEY: kargs["job_name"], }, owner_references=self.create_owner_reference( kargs["owner_pod"]), namespace=self.namespace, ), ) if self.cluster: pod = self.cluster.with_pod(pod) return pod
def create_pod(self, **kargs): # Container pod_resource_requests = kargs["resource_requests"] pod_resource_limits = kargs["resource_limits"] pod_resource_limits = (pod_resource_limits if pod_resource_limits else pod_resource_requests) ports = ([ client.V1ContainerPort(container_port=_FTLIB_GOSSIP_CONTAINER_PORT, name="gossip"), ] if "expose_ports" in kargs and kargs["expose_ports"] else None) container = client.V1Container( name=kargs["pod_name"], image=kargs["image_name"], command=kargs["command"], resources=client.V1ResourceRequirements( requests=parse_resource(pod_resource_requests), limits=parse_resource(pod_resource_limits), ), args=kargs["container_args"], image_pull_policy=kargs["image_pull_policy"], env=kargs["env"], ports=ports, ) # Pod spec = client.V1PodSpec( containers=[container], restart_policy=kargs["restart_policy"], priority_class_name=kargs["pod_priority"], termination_grace_period_seconds=kargs.get("termination_period", None), ) # Mount data path if kargs["volume"]: volumes, volume_mounts = parse_volume_and_mount( kargs["volume"], kargs["pod_name"]) spec.volumes = volumes container.volume_mounts = volume_mounts pod = client.V1Pod( spec=spec, metadata=client.V1ObjectMeta( name=kargs["pod_name"], labels=self._get_common_labels(), owner_references=self.create_owner_reference( kargs["owner_pod"]), namespace=self.namespace, ), ) if self.cluster: pod = self.cluster.with_pod(pod) return pod
def _create_pod(self, **kargs): # Container pod_resource_requests = kargs["resource_requests"] pod_resource_limits = kargs["resource_limits"] pod_resource_limits = ( pod_resource_limits if pod_resource_limits else pod_resource_requests ) container = client.V1Container( name=kargs["pod_name"], image=kargs["image_name"], command=kargs["command"], resources=client.V1ResourceRequirements( requests=parse_resource(pod_resource_requests), limits=parse_resource(pod_resource_limits), ), args=kargs["container_args"], image_pull_policy=kargs["image_pull_policy"], env=kargs["env"], ) # Pod spec = client.V1PodSpec( containers=[container], restart_policy=kargs["restart_policy"], priority_class_name=kargs["pod_priority"], ) # Mount data path if kargs["volume"]: volumes, volume_mounts = parse_volume_and_mount( kargs["volume"], kargs["pod_name"] ) spec.volumes = volumes container.volume_mounts = volume_mounts pod = client.V1Pod( spec=spec, metadata=client.V1ObjectMeta( name=kargs["pod_name"], labels=self._get_common_labels(), owner_references=self.create_owner_reference( kargs["owner_pod"] ), namespace=self.namespace, ), ) if self.cluster: pod = self.cluster.with_pod(pod) return pod