在 Kubic 上开始使用 kubeadm
2018 年 8 月 20 日 | Richard Brown | 无许可
kubeadm 现在可用在 Kubic 中
正如我们在 最近的公告 中讨论的那样,我们一直在努力推进新的方向,将 kubeadm 集成为在 openSUSE Kubic 上设置 Kubernetes 集群的主要方法。
经过这段时间,我们很自豪地宣布,自上周末发布的 Snapshot 20180815 以来,openSUSE Kubic 现在开箱即用地提供了一个可用的 kubeadm 解决方案。 这篇博客文章提供了有关如何以当前形式使用它的简要指南,以及我们计划在未来改进和更改的一些预览。
请注意: Kubic 上的 kubeadm 正在积极开发中。 虽然本指南中的所有内容在发布时都有效,但预计细节会在不久的将来发生变化。 在已知的情况下,这些可能的更改将会被提及,但有关更多最新文档,请查看我们的 Wiki,特别是关于 kubeadm 的文章。
我为什么要使用 kubeadm?
kubeadm 是 Kubernetes 上游项目提供的用于创建和升级 Kubernetes 集群的工具包。 Kubernetes 越来越多地成为运行规模化容器化应用程序的主要方式。
Kubernetes 旨在跨机器、虚拟机或云实例运行,它使用可用的硬件来创建容错、负载均衡的集群,以运行容器。 容器被组合在一起以形成逻辑单元(pod),这些单元可以轻松管理、发现,并且即使在不利情况下也能保持运行。
简而言之,如果您想以协调的方式在多台服务器上运行容器,您可能需要使用 Kubernetes,而 kubeadm 是 Kubic 项目推荐的设置 Kubernetes 的方式。
如果您只需要在一台服务器上运行容器,我们建议使用 MicroOS,它提供 Podman 和 Docker 容器运行时,用于在独立系统上运行容器。
如何在 Kubic 上设置 kubeadm
注意: 这篇文章已经过时,请阅读我们 wiki 上的当前文档。
首先,您需要下载一个 最新的 Kubic 安装介质。 任何 20180815 之后的版本都应该可以工作。 注意:官方虚拟机镜像是我们已经在努力开发的东西,但尚未准备好
对于在裸机上安装,将此介质刻录到 DVD 或 USB 存储设备上,然后从它启动您的第一个系统。 对于虚拟机或 VPS 提供商,只需直接启动 iso 即可。
这个第一个系统将是我们称之为 Master 的机器,它将运行核心 Kubernetes 服务,但不会运行任何容器化应用程序。 这将由额外的机器完成,这些机器被称为 Nodes。
在选择您的语言并同意我们的许可协议后,您将看到以下“系统角色”屏幕。 选择 kubeadm Node

按照设置 root 密码的下一步,如果您愿意,可以在开始安装之前自定义网络和其他选项。 我们建议保留默认设置,除非您知道自己在做什么。 然后安装将继续,您将看到以下登录提示。

使用安装过程中设置的 root 密码登录。 我们建议使用 ssh 远程登录到机器,因为它可能会简化以后在机器之间复制和粘贴所需的步骤。
kubeadm 已经安装,但是如果您直接运行 kubeadm init 命令,您将收到以下错误。

您可以通过运行 systemctl enable kubelet.service 和 systemctl enable --now docker.service 来解决这些问题。 您还需要将 --cni-bin-dir=/usr/lib/cni 添加到 /etc/sysconfig/kubelet 中的 KUBELET_EXTRA_ARGS= 行中
注意:我们旨在在未来的更新中消除这些步骤,包括将 CRI-O 作为默认值 引入的更新。
现在运行 kubeadm init --pod-network-cidr=10.244.0.0/16 注意:--pod-network-cidr=10.244.0.0/16 参数用于设置我们当前推荐的 flannel 网络接口(又名 CNI)。 此建议可能会在未来更改

经过短暂的时间,您的 Master 现在应该已经初始化完成。

记下/复制以 kubeadm join 开头的行。 您需要它来将 Nodes 加入您的集群。
如成功消息中提到的,通过运行 mkdir -p ~/.kube,然后 cp -i /etc/kubernetes/admin.conf ~/.kube/config 配置 root 用户以能够与集群通信
然后,您可以通过运行 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml 设置 flannel

现在您的 master 已完全设置好,并准备好让其他节点加入。 您以与 Master 相同的方式安装它们,选择 kubeadm Node 角色,就像之前一样,并在首次启动后登录为 root 后运行 systemctl enable kubelet.service 和 systemctl enable --now docker.service。 不要忘记还将 --cni-bin-dir=/usr/lib/cni 添加到 /etc/sysconfig/kubelet 中的 KUBELET_EXTRA_ARGS= 行中。
但是,与您的 master 不同,您通过粘贴 Master 上 kubeadm init 运行结束时显示的行来运行 kubeadm join 命令。

运行了一段时间后,您应该收到确认您的节点已加入集群的消息。

现在从您的 master 节点(或安装了 kubectl 并且将 master 上的 /etc/kubernetes/admin.config 文件复制到用户 $HOME/.kube/config 文件的任何系统)运行 kubectl get nodes 以确认您的集群正在运行。

恭喜! 您现在拥有一个可用的 Kubernetes 集群。
下一步
这只是我们与 kubeadm 作为 Kubic 的一部分合作的旅程的开始。 由于开发处于早期阶段,我们已经确定了一些我们希望解决的粗糙边缘。 其中一些包括
- 将 Docker 容器运行时替换为 kubeadm 的默认 CRI-O
- 简化/自动化上述记录的尽可能多的步骤,可能以新的 ‘kubicstrap’ 脚本的形式,以避免妨碍希望正常使用 kubeadm 的人
- 官方 虚拟机镜像 以消除虚拟/云环境的安装步骤
- 构建基于滚动 Tumbleweed 代码库的 替代 Kubernetes 容器,而不是 kubeadm 当前使用的上游容器
所有这些任务以及更多任务都可以在我们的 Trello 板 上进行评论和开放贡献。 如果您对其他功能和功能有任何建议,请将其添加到那里。 如果您希望帮助我们完成任何这些工作,请随时深入参与,无需许可,我们非常乐意接受您的帮助。
或者,与任何新软件一样,尤其是我们正在如此快速更改的东西,出现错误的几率很高。 如果您尝试本指南中的步骤并发现任何错误,请将其报告到我们的 Bugzilla,在“Kubic”组件下。
谢谢,祝您玩得开心!
类别: 博客
标签