示例#1
0
def get_head_service(cluster_name, cluster_owner_reference, head_service_ports):
    # Configure head service for dashboard, client, and Ray Serve.

    # Pull the default head service from
    # autoscaler/_private/_kubernetes/defaults.yaml
    default_kubernetes_config = _get_default_config({"type": "kubernetes"})
    default_provider_conf = default_kubernetes_config["provider"]
    head_service = copy.deepcopy(default_provider_conf["services"][0])

    # Configure the service's name
    service_name = f"{cluster_name}-ray-head"
    head_service["metadata"]["name"] = service_name

    # Garbage-collect service upon cluster deletion.
    head_service["metadata"]["ownerReferences"] = [cluster_owner_reference]

    # Allows service to access the head pod.
    # The corresponding label is set on the head pod in
    # KubernetesNodeProvider.create_node().
    head_service["spec"]["selector"] = head_service_selector(cluster_name)

    # Configure custom ports if provided by the user.
    if head_service_ports:
        user_port_dict = port_list_to_dict(head_service_ports)
        default_port_dict = port_list_to_dict(head_service["spec"]["ports"])
        # Update default ports with user specified ones.
        default_port_dict.update(user_port_dict)
        updated_port_list = port_dict_to_list(default_port_dict)
        head_service["spec"]["ports"] = updated_port_list

    return head_service
示例#2
0
文件: util.py 项目: nikitavemuri/ray
def fillout_defaults(config: Dict[str, Any]) -> Dict[str, Any]:
    defaults = _get_default_config(config["provider"])
    defaults.update(config)

    # Just for clarity:
    merged_config = copy.deepcopy(defaults)

    # Fill auth field to avoid key errors.
    # This field is accessed when calling NodeUpdater but is not relevant to
    # certain node providers and is thus left out of some cluster launching
    # configs.
    merged_config["auth"] = merged_config.get("auth", {})

    # A legacy config is one which doesn't have available_node_types,
    # but has at least one of head_node or worker_nodes.
    is_legacy_config = (("available_node_types" not in config) and
                        ("head_node" in config or "worker_nodes" in config))
    # Do merging logic for legacy configs.
    if is_legacy_config:
        merged_config = merge_legacy_yaml_with_defaults(merged_config)
    # Take care of this here, in case a config does not specify any of head,
    # workers, node types, but does specify min workers:
    merged_config.pop("min_workers", None)

    return merged_config
    def test_operator_configure_ports(self):
        cluster_name = "test-cluster"
        cluster_owner_reference = {}
        head_service_ports = [
            {"name": "test-port", "port": 123, "targetPort": 456},
            {"name": "client", "port": 555, "targetPort": 666},
        ]
        head_service = get_head_service(
            cluster_name, cluster_owner_reference, head_service_ports
        )
        expected_ports = [
            {"name": "client", "port": 555, "targetPort": 666},
            {"name": "dashboard", "protocol": "TCP", "port": 8265, "targetPort": 8265},
            {"name": "ray-serve", "protocol": "TCP", "port": 8000, "targetPort": 8000},
            {"name": "test-port", "port": 123, "targetPort": 456},
        ]
        assert head_service["spec"]["ports"] == expected_ports

        head_service = get_head_service(cluster_name, cluster_owner_reference, None)
        assert (
            head_service["spec"]["ports"]
            == _get_default_config({"type": "kubernetes"})["provider"]["services"][0][
                "spec"
            ]["ports"]
        )
示例#4
0
文件: util.py 项目: yynst2/ray
def fillout_defaults(config: Dict[str, Any]) -> Dict[str, Any]:
    defaults = _get_default_config(config["provider"])
    defaults.update(config)
    defaults["auth"] = defaults.get("auth", {})
    try:
        defaults = _fillout_available_node_types_resources(defaults)
    except Exception:
        # We don't want to introduce new errors with filling available node
        # types resources feature.
        logger.exception("Failed to autodetect node resources")

    return defaults
示例#5
0
文件: util.py 项目: SimonBurmer/ray
def fillout_defaults(config: Dict[str, Any]) -> Dict[str, Any]:
    defaults = _get_default_config(config["provider"])
    defaults.update(config)
    defaults["auth"] = defaults.get("auth", {})
    defaults = rewrite_legacy_yaml_to_available_node_types(defaults)
    try:
        defaults = _fillout_available_node_types_resources(defaults)
    except ValueError:
        # When the user uses a wrong instance type.
        raise
    except Exception:
        # When the user is using e.g., staroid, but it is not installed.
        logger.exception("Failed to autodetect node resources.")
    return defaults
示例#6
0
def get_provider_config(cluster_name):
    default_kubernetes_config = _get_default_config({"type": "kubernetes"})
    default_provider_conf = default_kubernetes_config["provider"]

    # Configure head service for dashboard and client
    head_service = copy.deepcopy(default_provider_conf["services"][0])
    service_name = f"{cluster_name}-ray-head"
    head_service["metadata"]["name"] = service_name
    head_service["spec"]["selector"] = head_service_selector(cluster_name)

    provider_conf = {}
    provider_conf["type"] = "kubernetes"
    provider_conf["use_internal_ips"] = True
    provider_conf["namespace"] = RAY_NAMESPACE
    provider_conf["services"] = [head_service]
    return provider_conf
示例#7
0
def get_provider_config(cluster_name, namespace, cluster_owner_reference):
    default_kubernetes_config = _get_default_config({"type": "kubernetes"})
    default_provider_conf = default_kubernetes_config["provider"]

    # Configure head service for dashboard and client
    head_service = copy.deepcopy(default_provider_conf["services"][0])
    service_name = f"{cluster_name}-ray-head"
    head_service["metadata"]["name"] = service_name
    # Garbage-collect service upon cluster deletion.
    head_service["metadata"]["ownerReferences"] = [cluster_owner_reference]
    # Allows service to access the head pod.
    # The corresponding label is set on the head pod in
    # KubernetesNodeProvider.create_node().
    head_service["spec"]["selector"] = head_service_selector(cluster_name)

    provider_conf = {}
    provider_conf["type"] = "kubernetes"
    provider_conf["use_internal_ips"] = True
    provider_conf["namespace"] = namespace
    provider_conf["services"] = [head_service]

    # Signal to autoscaler that the Operator is in use:
    provider_conf["_operator"] = True
    return provider_conf
示例#8
0
def fillout_defaults(config: Dict[str, Any]) -> Dict[str, Any]:
    defaults = _get_default_config(config["provider"])
    defaults.update(config)
    defaults["auth"] = defaults.get("auth", {})
    defaults = rewrite_legacy_yaml_to_available_node_types(defaults)
    return defaults
示例#9
0
文件: util.py 项目: kylehkhsu/ray
def fillout_defaults(config: Dict[str, Any]) -> Dict[str, Any]:
    defaults = _get_default_config(config["provider"])
    defaults.update(config)
    defaults["auth"] = defaults.get("auth", {})
    return defaults