【问题标题】:microk8s Broken K8s Dashboard and Kubeflow Dashboardmicrok8s Broken K8s Dashboard 和 Kubeflow Dashboard
【发布时间】:2020-07-13 09:00:08
【问题描述】:

我在 Ubuntu 18.04 LTS VM、3 核、60 GB 存储、12 GB 内存中使用 microk8s。我按照 microk8s 网站here 的说明进行安装。

$ snap install microk8s --classic --channel=1.18/stable
$ sudo microk8s start
$ sudo microk8s enable dns storage dashboard
$ sudo microk8s enable kubeflow

这需要一些时间,但一切都已开始。我有 110 个豆荚正在运行。当 Kubeflow 完成安装时,我得到了

Operator pods ready.
Waiting for service pods to become ready.

Congratulations, Kubeflow is now available.
The dashboard is available at http://10.64.140.43.xip.io/

    Username: admin
    Password: VIVGI9KB7GEX6JNAQJXZTXD97S42XD

这不起作用。当我将该 URL 放入浏览器时,我得到一个白屏。然后我尝试访问 kubernetes 仪表板并能够使用我的令牌登录,但它说它找不到任何资源。它不会在命名空间、节点或任何东西中显示任何内容。

命名空间仍处于默认状态,因为我无法让它显示kubeflow。文档说 kubeflow 不适用于 kubernetes 1.18,但如果您安装旧版本的 microk8s,它不会为您提供启用 kubeflow 的选项。这也不能解释为什么仪表板不工作。我真的不知道要检查什么来解决这个问题。我尝试使用 kubeflow 大使(kubeflow 负载均衡器)的内部 IP 地址,但这似乎也不起作用。

这里有更多关于 ambassador 服务的详细信息

sudo microk8s kubectl -n kubeflow describe service/ambassador
Name:                     ambassador
Namespace:                kubeflow
Labels:                   juju-app=ambassador
Annotations:              juju.io/controller: 7fe60455-b041-4b5e-8c85-0c8155b0f52d
                          juju.io/model: f635bf6f-c598-4d5c-841b-e798f520a898
                          metallb.universe.tf/address-pool: default
Selector:                 juju-app=ambassador
Type:                     LoadBalancer
IP:                       10.152.183.67
LoadBalancer Ingress:     10.64.140.43
Port:                     ambassador  80/TCP
TargetPort:               80/TCP
NodePort:                 ambassador  30085/TCP
Endpoints:                10.1.40.17:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason        Age                 From                Message
  ----    ------        ----                ----                -------
  Normal  IPAllocated   58m                 metallb-controller  Assigned IP "10.64.140.43"
  Normal  nodeAssigned  2m5s (x5 over 56m)  metallb-speaker     announcing from node "tatooine"

【问题讨论】:

  • sudo snap install microk8s --classic --channel=candidate,这里是启用的插件:dashboard:启用 dns:启用入口:启用 istio:启用 kubeflow:启用 metallb:启用 prometheus:启用存储:启用
  • 所以我也有同样的问题。问题是 10.64.140.43.xip.io 只能从您的 VM 访问,而不是从您的桌面访问。如果打开 80 端口,可以连接到机器,但是处理请求的 nginx 服务器不会将其转发到仪表板,因为 Host 标头(必须是 10.64.140.43.xip.io)。我没有解决方案,但您可以更改 http 标头(有 chrome 扩展),这可能是一个肮脏的解决方案(欢迎任何真正的解决方案来更改入口的“外部”IP)

标签: kubernetes kubernetes-dashboard kubeflow microk8s


【解决方案1】:

我在 Ubuntu 18.04.3 LTS 上本地运行 MicroK8s 1.18.2 + Kubeflow(不在 VM 环境中)并且遇到了同样的问题。幸运的是,我能够解决这个问题,并想与您分享我的解决方案。原来我的笔记本电脑无法解析仪表板的 URL (10.64.140.43.xip.io),所以我将此地址添加到 hosts 文件中。

我的安装程序:

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

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

我希望这也适用于你。 :)

【讨论】:

  • '10.64.140.43 10.64.140.43.xip.io 添加到/etc/hots/ 是我所缺少的。谢谢!
【解决方案2】:

所以我遇到了同样的问题并花了一些时间,但是感谢那里的代码https://github.com/ubuntu/microk8s/blob/master/microk8s-resources/actions/enable.kubeflow.sh

enable kubeflow 之后,kubeflow 仪表板在http://10.64.140.43.xip.io/ 可用,但这是一个私有 IP,在您的 VM 本地网络之外无法访问。你不能用代理来解决这个问题(我试过),因为某些 URL 是绝对的(使用域名)。

假设您的虚拟机可以通过公共 IP A.B.C.D 从外部访问。您需要将 kubeflow 主机名更改为 A.B.C.D.xip.io

所以基本上你需要在几个juju应用程序中更改主机名:

sudo microk8s juju config dex-auth public-url=http://A.B.C.D.xip.io
sudo microk8s juju config oidc-gatekeeper public-url=http://A.B.C.D.xip.io
sudo microk8s juju config ambassador juju-external-hostname=A.B.C.D.xip.io

希望对你有帮助,

【讨论】:

  • 这可能有一些见解,但如果可能的话,你能分享一些额外的信息吗?由于锁定文件的权限,我已经应用了您在没有sudo 的情况下提到的上述内容。但是,我不确定下一步该做什么。我需要这样做ssh -D9999 ... 还是启用这个 SOCKS 代理?
猜你喜欢
  • 2019-08-04
  • 2021-01-11
  • 2021-08-14
  • 2015-09-25
  • 2021-06-30
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
相关资源
最近更新 更多