在裸机设置上设置Kubeflow?

时间:2019-08-23 06:17:34

标签: kubernetes kubeflow

一直在尝试在共享服务器(而不是我的笔记本电脑)上的裸机上(在Prem等上)设置Kubeflow。我完全按照Kubeflow Deployment with kfctl_k8s_istio设置说明进行操作。

在“访问Kubeflow仪表板”下显示

  

请参阅Ingress Gateway指南。

这只会引发更多问题,我不知道我没有写设置的答案,即

  1. UI的入口端口是什么? kubectl get svc istio-ingressgateway -n istio-system返回一个拥抱列表?
  2. 如果外部IP为<none>怎么办?该服务器在本地网络上具有IP,即192.168.1.69
  3. 我假设kfctl没有设置外部负载均衡器?
  4. 托管Web UI的容器是什么? GatewayVirtualService的Yaml应该是什么样子?

我想使用Kubeflow并必须学习Istio的工作方式?为什么?

4 个答案:

答案 0 :(得分:1)

不幸的是,这是自0.6版以来Kubeflow的工作方式。只要我记得大使代办处有很多麻烦,并且考虑到Istio -de-facto 已成为Kubernetes的新服务网格标准,这个项目的时间就已经到了最后将其集成为默认解决方案。但是,对于裸机用户来说,部署它变得有些复杂。

在您的情况下,这就是您要做的:

  1. 在集群中安装istio并启用istio-ingressgateway(确保支持您的Kubernetes版本)
  2. 安装外部负载平衡器预配器,metallb是必经之路。 L2设置适用于大多数情况,几乎不需要进行配置。
  3. istio-ingressgateway类型从ClusterIP转换为LoadBalancer,明确设置LoadBalancer IP的可读性。
  4. 通过访问负载均衡器,享受配置不佳但仍能正常工作的中央仪表板的乐趣。

总体而言,Istio集成使ML工程师更加痛苦,而Ops和DevOps工程师则更容易部署和配置它。

答案 1 :(得分:1)

所以,最后我选择了 k3s,因为它是单线设置

class Zoo
{
   public string AnimalType { get; set; }
   public bool ForAdoption { get; set; }
   public decimal ApproximateWeight { get; set; }
}

class Animal
{
  public string Name { get; set; }
  public string TypeOfAnimal { get; set; }
  public short Weight { get; set; }
  public string Color { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var myAnimalsCollection = GetAllAnimalsFromDB();

        var listOfAnimals = (from item in myAnimalsCollection
                             select new Zoo
                             {
                                 AnimalType = item.TypeOfAnimal,
                                 ApproximateWeight = item.Weight,
                                 ForAdoption = false
                             }).ToList();
    }
}

您可以使用环境变量设置 many options

我们使用 GPU,因此需要设置 NVIDIA device plugin for Kubernetes

我们现在使用 Ansible 脚本完成所有这些工作,因为我们要管理一组机器。

与大多数 Google 项目一样,Kubeflow 过于臃肿,我们现在将 Dagster 视为易于在本地设置中进行开发。

答案 2 :(得分:0)

如果EXTERNAL-IP值为,则您的环境未为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口访问网关,该端口可以找到here

访问Kubeflow UI的说明,找到here。使用以下命令来设置到Istio网关的端口转发:

SKStoreReviewController.requestReview()

然后,您就有可能访问中央导航仪表板。

kfctl 是用于部署和管理Kubeflow的CLI。

答案 3 :(得分:0)

如果您仍然想给Kubeflow一个机会,这就是我如何启动和运行它。我在Ubuntu 18.04.3 LTS上本机运行MicroK8s 1.18.2 + Kubeflow(不在VM环境中)。

我的安装例程:

> # 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

取决于您的硬件和Internet连接,可能需要一些时间才能准备好所有服务。如果所有服务都已启动,只需在浏览器中打开http://10.64.140.43.xip.io,然后输入用户(admin)和您生成的密码即可。