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.
kubectl get svc istio-ingressgateway -n istio-system
returns a hug list??<none>
? The server has an IP on the local network i.e. 192.168.1.69kfctl
didn't setup an external load balancer?Gateway
and VirtualService
yaml look like?I want to use Kubeflow and have to learn how Istio works? Why?
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.
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.
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:
istio-ingressgateway
type from ClusterIP to LoadBalancer, explicitly set LoadBalancer IP for readbility.Overall, Istio integration makes it more painful for ML engineers and much more comfortable for Ops- and DevOps-engineers to deploy and provision it.