code: def new_cluster(
      kube_api_client=None,
      image=None,
      scheduler_num=1,
      scheduler_cpu=2,
      scheduler_mem=4 * 1024**3,
      worker_num=1,
      worker_cpu=8,
      worker_mem=32 * 1024**3,
      worker_spill_paths=None,
      worker_cache_mem="45%",
      min_worker_num=None,
      web_num=1,
      web_cpu=1,
      web_mem=4 * 1024**3,
      slb_endpoint=None,
      verify_ssl=True,
      job_name=None,
      timeout=None,
      **kwargs,
  ):
      worker_spill_paths = worker_spill_paths or ["/tmp/spill-dir"]
      cluster = KubeDLCluster(
          kube_api_client,
          image=image,
          scheduler_num=scheduler_num,
          scheduler_cpu=scheduler_cpu,
          scheduler_mem=scheduler_mem,
          worker_num=worker_num,
          worker_cpu=worker_cpu,
          worker_mem=worker_mem,
          worker_spill_paths=worker_spill_paths,
          worker_cache_mem=worker_cache_mem,
          min_worker_num=min_worker_num,
          web_num=web_num,
          web_cpu=web_cpu,
          web_mem=web_mem,
          slb_endpoint=slb_endpoint,
          verify_ssl=verify_ssl,
          job_name=job_name,
          timeout=timeout,
          **kwargs,
      )
      client = KubeDLClusterClient(cluster)
      client.start()
      return client
  
imports: import logging
  import time
  import warnings
  import requests
  from ...session import new_session
  from .config import MarsSchedulerSpecConfig, MarsWorkerSpecConfig, MarsWebSpecConfig, MarsJobConfig
label_desc: Use image node_id 1 for calling a global function with example usage: new_cluster(kube_api_client, image, scheduler_num, scheduler_cpu, scheduler_mem, worker_num, worker_cpu, worker_mem, worker_spill_paths, worker_cache_mem, min_worker_num, web_num, web_cpu, web_mem, slb_endpoint, verify_ssl, job_name, timeout) and returns: client