我在Ubuntu 18.04 LTSVM中使用microk8s,3核,60 GB存储空间,12 GB内存。我按照microk8s网站的说明安装了它。
$ snap install microk8s --classic --channel=1.18/stable
$ sudo microk8s start
$ sudo microk8s enable dns storage dashboard
$ sudo microk8s enable kubeflow
这花了一些时间,但一切都开始了。我有110个pod正在运行。当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的选项。这也不能解释为什么仪表板不起作用。我真的不知道该检查什么来解决这个问题。我尝试使用内部IP地址为kubeflow大使(kubeflow负载均衡器),但这似乎也不起作用。
以下是有关大使
服务的更多详细信息
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"
我在Ubuntu 18.04.3 LTS上运行MicroK8s 1.18.2 Kubeflow(不是在VM环境中),遇到了同样的问题。幸运的是,我能够解决这个问题,并想与您分享我的解决方案。结果是,我的笔记本电脑无法将URL解析到仪表板(10.64.140.43xip.io),所以我将此地址添加到主机文件中。
我的安装程序:
> # 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并输入用户(管理员)和生成的密码。
我希望这对你也有效。:)
所以我遇到了同样的问题,花了一些时间在上面,但由于那里的代码,我找到了如何做到这一点https://github.com/ubuntu/microk8s/blob/master/microk8s-resources/actions/enable.kubeflow.sh
启用kubeflow后,kubeflow仪表板在http://10.64.140.43xip.io/可用,但这是一个私有IP,在VM的本地网络之外无法访问。你不能用代理解决这个问题(我试过了),因为有些URL是绝对的(域名)。
假设您的VM可以在公共IP从外部访问。您需要将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
我希望这能有所帮助,