Search code examples
kubernetesgunicornipv6mlflow

error when using mlflow on ipv6: '' is not a valid port number


I'm trying to deploy MLFlow server on Kubernetes, which requires using IPv6. Previously I was successfully using it in an IPv4 environment.

In my existing deployment on IPv4, I use this startup command which works:

mlflow server --host 0.0.0.0 --port 8735

For IPv6, I swapped 0.0.0.0 with :: which should be the equivalent (meaning, accept incoming connections from anywhere)

mlflow server --host :: --port 8735

However, this always results in this error, apparently from gunicorn.

Error: '' is not a valid port number.

This is confusing since I already specify the port in the command.

What does the correct command look like?


Solution

  • Use square brackets around the address. This disambiguates the :: from the port in the final bind command passed to gunicorn.

    mlflow server --host [::] --port 8735
    

    MLFlow/Gunicorn ref: https://github.com/mlflow/mlflow/blob/9df7c92/mlflow/server/__init__.py#L183

    bind_address = f"{host}:{port}"