无法 bootstrap(云类型:本地主机)- 使用 LXD/Conjure-up 在本地安装 Kubernetes 集群时出错

Unable to bootstrap (cloud type: localhost) - Error when installing Kuberneters cluster locally with LXD/Conjure-up

使用 Ubuntu 18.04.

我正在尝试使用本指南(LXD + conjure-up kubernetes)在本地计算机 (localhost) 上安装 kubernetes 集群:

https://kubernetes.io/docs/getting-started-guides/ubuntu/local/#before-you-begin

当我运行:

conjure-up kubernetes

我select安装如下:

和 select localhost 用于 "Choose a cloud" 并使用安装向导其余部分的默认值。然后它开始安装,并在 30-40 分钟后完成并出现以下错误:

这是日志: https://pastebin.com/raw/re1UvrUU

一处错误显示:

2018-07-25 20:09:38,125 [ERROR] conjure-up/canonical-kubernetes - events.py:161 - Unhandled exception in <Task finished coro=<BaseBootstrapController.run() done, defined at /snap/conjure-up/1015/lib/python3.6/site-packages/conjureup/controllers/juju/bootstrap/common.py:15> exception=BootstrapError('Unable to bootstrap (cloud type: localhost)',)>

但这并没有多大帮助。

安装 wizard/conjure-up 失败的原因有什么建议吗?

也基于此post:

https://github.com/conjure-up/conjure-up/issues/1308

我试过先禁用防火墙:

sudo ufw disable

然后重新运行installation/conjure安装向导。但是我得到了同样的错误。

下面是关于我如何安装和配置 LXD/conjure-up 的更多详细信息:

$ snap install lxd
lxd 3.2 from 'canonical' installed
$ /snap/bin/lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, ceph, dir, lvm) [default=btrfs]: 
Create a new BTRFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=26GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 

已配置的群组成员资格:

sudo usermod -a -G lxd $USER
newgrp lxd

下一个安装:

sudo snap install conjure-up --classic

然后运行安装:

conjure-up kubernetes

我无法重现您的确切问题,但我安装了 conjure-up + lxd,最后在我新安装的 VirtualBox Ubuntu 18.04(桌面)VM 上安装了 Kubernetes .希望这个回答能对您有所帮助!

我查看了 kubernetes.io 文档页面,那个页面缺少一点点信息,它确实提到了 lxd 但没有提到 lxd init 的部分,我假设你在conjure-up user manual

话虽如此,我按照 conjure-up 用户手册进行了一些小改动。我假设您可以使用 conjure-up 的边缘版本,我从 stable 开始,但在测试不同组合时更改为边缘版本。

同时请确保您拥有 user manualconjure-upCanoncial Distribution of Kubernetes 中所述的推荐资源为你。您可能不需要 3 x etcd、3 x worker 节点和 2 x Master,如果您不要只是在 conjure-up 向导中调低容器数量。

这些是我执行的步骤(作为我的本地用户):

  1. 确保您的 Ubuntu 框已更新:sudo apt update && sudo apt upgrade
  2. 通过 运行ning 安装 conjure-upsudo snap install conjure-up --classic --edge
  3. 通过 运行ning 安装 lxdsudo snap install lxd
  4. 随着 lxd 出现客户端部分 lxc,如果您 运行 例如lxc list 你应该得到一个空的 table (还没有容器启动)。我此时遇到权限错误,我 运行 以下内容: sudo chown -R lxd:lxd /var/snap/lxd/ 更改 lxd 目录的所有者和组,其中包含您将使用 [=24= 进行通信的套接字].
  5. 将您的用户添加到 lxd 组:sudo usermod -a -G lxd $USER && newgrp lxd,注销并重新登录以使其永久生效,而不仅在您当前的 shell.
  6. 中有效
  7. 现在使用以下命令手动创建一个 lxd 网桥:lxc network create lxdbr1 ipv4.address=auto ipv4.nat=true ipv6.address=none ipv6.nat=false
  8. 现在让我们 运行 lxd 的初始部分与 lxd init。当被要求 创建一个新的本地网桥时,记得回答 no,在下一个提示中提供您新创建的网桥(lxdbr1)。其余问题的答案可以保持默认。
  9. 现在继续 运行ning conjure-up kubernetes 并选择 localhost 作为您的类型。对我来说,localhost 选择从一开始就变灰了,当我手动创建网桥时它起作用了,而不是通过 lxd init 步骤。
  10. 跳过您可以安装的其他组件,如 Rancher、Prometheus 等。
  11. 选择您的新网桥和默认存储池,继续下一步。
  12. 在下一步中,如果需要自定义您的 Kubernetes 集群,然后点击部署。现在你等着!

您始终可以排除故障并列出使用 lxc 工具创建的所有容器。如果您曾经使用过 Docker,那么 lxc 工具感觉很像 docker 客户端。

最后是一些想法和观察,很多 移动部件到 conjure-up,正如您可能已经看到的那样。它实际上被描述为:conjure-up 是一个跨越几个不同底层技术的薄层 - Juju、MAAS 和 LXD。

作为参考,我最终安装了以下版本:

  • lxd 版本 3.3
  • conjure-up 版本 2.6.1