在 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

system-role

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

master-login

使用安装过程中设置的 root 密码登录。 我们建议使用 ssh 远程登录到机器,因为它可能会简化以后在机器之间复制和粘贴所需的步骤。

kubeadm 已经安装,但是如果您直接运行 kubeadm init 命令,您将收到以下错误。

master-firstrun-errors

您可以通过运行 systemctl enable kubelet.servicesystemctl 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-secondrun

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

master-initcomplete

记下/复制以 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-cni

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

但是,与您的 master 不同,您通过粘贴 Master 上 kubeadm init 运行结束时显示的行来运行 kubeadm join 命令。

node-join

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

node-joined

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

master-nodes

恭喜! 您现在拥有一个可用的 Kubernetes 集群。

下一步

这只是我们与 kubeadm 作为 Kubic 的一部分合作的旅程的开始。 由于开发处于早期阶段,我们已经确定了一些我们希望解决的粗糙边缘。 其中一些包括

  • 将 Docker 容器运行时替换为 kubeadm 的默认 CRI-O
  • 简化/自动化上述记录的尽可能多的步骤,可能以新的 ‘kubicstrap’ 脚本的形式,以避免妨碍希望正常使用 kubeadm 的人
  • 官方 虚拟机镜像 以消除虚拟/云环境的安装步骤
  • 构建基于滚动 Tumbleweed 代码库的 替代 Kubernetes 容器,而不是 kubeadm 当前使用的上游容器

所有这些任务以及更多任务都可以在我们的 Trello 板 上进行评论和开放贡献。 如果您对其他功能和功能有任何建议,请将其添加到那里。 如果您希望帮助我们完成任何这些工作,请随时深入参与,无需许可,我们非常乐意接受您的帮助。

或者,与任何新软件一样,尤其是我们正在如此快速更改的东西,出现错误的几率很高。 如果您尝试本指南中的步骤并发现任何错误,请将其报告到我们的 Bugzilla,在“Kubic”组件下。

谢谢,祝您玩得开心!

类别: 博客

标签

分享这篇文章