code: def __init__(
      self,
      provider_config: Dict[str, Any],
      cluster_name: str,
      _allow_multiple: bool = False,
  ):
      logger.info("Creating KubeRayNodeProvider.")
      self.namespace = provider_config["namespace"]
      self.cluster_name = cluster_name
  
      self.headers, self.verify = load_k8s_secrets()
  
      assert (
          provider_config.get(WORKER_LIVENESS_CHECK_KEY, True) is False
      ), f"To use KubeRayNodeProvider, must set `{WORKER_LIVENESS_CHECK_KEY}:False`."
      assert (
          provider_config.get(WORKER_RPC_DRAIN_KEY, False) is True
      ), f"To use KubeRayNodeProvider, must set `{WORKER_RPC_DRAIN_KEY}:True`."
      BatchingNodeProvider.__init__(
          self, provider_config, cluster_name, _allow_multiple
      )
  
imports: import json
  import logging
  import os
  from collections import defaultdict
  from typing import Any, Dict, List, Optional, Tuple
  import requests
  from ray.autoscaler._private.constants import WORKER_LIVENESS_CHECK_KEY, WORKER_RPC_DRAIN_KEY
  from ray.autoscaler._private.util import NodeID, NodeIP, NodeKind, NodeStatus, NodeType
  from ray.autoscaler.batching_node_provider import BatchingNodeProvider, NodeData, ScaleRequest
  from ray.autoscaler.tags import NODE_KIND_HEAD, NODE_KIND_WORKER, STATUS_UP_TO_DATE, STATUS_UPDATE_FAILED, TAG_RAY_USER_NODE_TYPE
label_desc: Use image node_id 1 to create a new KubeRayNodeProvider object from inherited base classes: BatchingNodeProvider with example: obj = KubeRayNodeProvider(provider_config, cluster_name, _allow_multiple)