Kubeflow setup on baremetal setup?

8/23/2019

Have been trying to setup Kubeflow on bare metal (on prem etc) on a shared server i.e. not my laptop. I followed the Kubeflow Deployment with kfctl_k8s_istio setup instructions which all well.

Under "Access Kubeflow Dashboard" it says

Refer Ingress Gateway guide.

which just leads to more questions I don't know the answer to coz i didn't write the setup i.e.

  1. What is the ingress port for the UI? kubectl get svc istio-ingressgateway -n istio-system returns a hug list??
  2. What do i do if the external IP is <none>? The server has an IP on the local network i.e. 192.168.1.69
  3. I'm assuming kfctl didn't setup an external load balancer?
  4. Whats the container that hosts the web UI? What should the Gateway and VirtualService yaml look like?

I want to use Kubeflow and have to learn how Istio works? Why?

-- CpILL
kubeflow
kubernetes

3 Answers

5/28/2020

If you still want to give Kubeflow a chance here is how I got it up and running. I am running MicroK8s 1.18.2 + Kubeflow on Ubuntu 18.04.3 LTS natively (not in a VM environment).

My installation routine:

> # Install MicroK8s
> $ sudo snap install microk8s --classic --channel=1.18/stable  

> # Set IP forwarding
> $ sudo apt-get update -qq  
> $ sudo apt-get install -qq -y iptables-persistent  
> $ sudo iptables -P FORWARD ACCEPT

> # Add xip.io adress to hosts   
> $ sudo -- sh -c "echo '10.64.140.43\t10.64.140.43.xip.io' >>
> /etc/hosts"

> # Check if MicroK8s is Running
> $ microk8s status --wait-ready | grep microk8s  
> $ microk8s kubectl get nodes
> $ microk8s kubectl get services

> # Set kubectl alias for MicroK8s 
> $ sudo snap alias microk8s.kubectl kubectl 

> # Activate MicroK8s Add-ons (DNS, Storage, K8s-Dashboard)
> $ microk8s.enable dns storage dashboard

> # (OPTIONAL) Activate GPU Devices for Nvidia GPUs
> $ microk8s.enable gpu 

> # Activate Kubeflow 
> $ microk8s.enable kubeflow    

> # Check if MicroK8s Add-ons are Running 
> $ microk8s status --wait-ready

Depending on your hardware and internet connection, it might take some time until all services are ready. If all services are up, simply open http://10.64.140.43.xip.io in your browser and enter the user (admin) and your generated password.

-- MrMuretto
Source: StackOverflow

8/26/2019

If the EXTERNAL-IP value is , your environment does not provide an external load balancer for the ingress gateway. In this case, you can access the gateway using the service’s node port, which you can find here.

Instruction for accessing Kubeflow UI find here. Use the following command to set up port forwarding to the Istio gateway:

export NAMESPACE=istio-system
kubectl port-forward -n istio-system svc/istio-ingressgateway 8080:80

Then you have possibility to access the central navigation dashboard.

kfctl is a CLI for deploying and managing Kubeflow.

-- muscat
Source: StackOverflow

2/24/2020

Unfortunately, this is how Kubeflow works since verion 0.6. For as long as I remember there was A LOT of hassle with ambassador proxy, and considering that Istio de-facto has become a new service mesh standard for Kubernetes, it was a matter of time for this project to finally integrate it as a default solution. Nevertheless, it has become slightly more complicated for bare-metal users to deploy it.

In your case, that's what you had to do:

  1. Install istio in your cluster and enable istio-ingressgateway (make sure your Kubernetes version is supported)
  2. Install external loadbalancer provisioner, metallb is the way to go. L2 setup works for most cases and requires almost no configuration.
  3. Convert your istio-ingressgateway type from ClusterIP to LoadBalancer, explicitly set LoadBalancer IP for readbility.
  4. Enjoy your poorly configured yet working central dashboard by accessing the loadbalancer.

Overall, Istio integration makes it more painful for ML engineers and much more comfortable for Ops- and DevOps-engineers to deploy and provision it.

-- Timur Solovev
Source: StackOverflow