驯化库伯内斯

2020-05-02 18:03:48

这是一个在家庭网络中运行K8的指南,并将其用作家庭服务器-运行您的博客、媒体库、智能家居、宠物项目等。集群实际上很容易设置,但我们开发人员太过依赖,我们忘记了一些基本的网络和其他低级别的东西-我发现这种体验很有教育意义。

群集将服务于真实的工作负载-我们将处理将其暴露给互联网、家庭网络中的IP分配、合理的安全性、分布式存储和监控。它面向家庭网络,不依赖负载均衡器、SAN、多个公网IP或任何其他花哨的基础设施。我会尽量保持简单(阅读可靠)--没有‘企业’的花言巧语。

要继续,请确保您熟悉基本的Kubernetes概念,了解什么是主节点、代理、LoadBalancer服务、部署、入口、持久卷等。

让我们把K8集群看作一个分层的蛋糕,看看每一层。

顶部是您正在编写和/或运行的应用程序-这是真正提供价值的部分,也是开发人员花费大部分时间的地方。这可能是你的WordPress博客,你写的一些API和你的比特币交易机器人。

下一级是用于管理和运行应用程序的服务-即您自己的MySQL数据库、ELK堆栈、监控等。它们不必在您的群集中运行-Amazon/Azure/GCP提供PaaS版本及其托管的K8服务。DevOps和管理员在这里花费了大量时间。

在系统级别,我们已经获得了组成功能群集的组件-您不能跳过这些组件中的任何一个:

较小的托管K8提供商(如O vhCloud和DigitalOcean)通常在此级别运营。如果要引导您自己的群集,则必须配置它们。系统管理员和IT服务人员可能大部分时间都在这里度过。

基础架构层不言而喻-即金属、CPU、RAM、磁盘和物理网络。

你可能会想买一堆Rasberri Pi,但还有更好的替代方案。在我们深入研究它们之前,请考虑以下几点:

CPU和RAM集中在一个集群中,你可以从几台旧笔记本电脑或其他过时的工具包中获得一个坚固的20 GB内存和6个内核。我不会购买老式的机架式服务器-它们既便宜又强大,但它们听起来就像一个失速的涡轮风扇,而且它们的功耗太高了。

存储以另一种方式工作-我们将在群集上安装分布式存储系统,他们(通常)保留3份数据拷贝以实现冗余。像PI这样的SBC在这方面非常笨拙,它们的性能比任何有合适SSD的产品都低10倍,可靠性也更低。像Intel-NUC这样的迷你PC通常有两个版本--“较胖”的一个,它有一个额外的SATA驱动器插槽,你可以用来做硬盘。

您需要一个具有“始终在线”功能的系统,以便计算机在断电后自动启动,至少对于主节点是这样。它在大多数台式机和SBCS的BIOS设置中,但大多数笔记本电脑没有。

所有的套件都插在一个千兆以太网交换机上。从左到右分别为:

Beelink Gemini X45配备J4105 8 GB内存、128 GB固态硬盘和320 GB硬盘,这是主节点。

带有4 GB内存、SD卡、机箱等的PI4大约是GB 100。花同样的钱,你可以买到一台无名的Intel-ATOM迷你PC,这些都带有x86 Arch、真正的BIOS和真正的sata或m.2端口的好处。

对于GB 200,你可以买到二手迷你台式机,比如ThinkCentre M700 i5-6400T。这是一个重大的性能改进,但设备更大了。

在GB 300及以上版本,您可以构建全新的、紧凑的HTPC系统,例如基于华硕DeskMini A300和全功能台式机组件。或者,如果空间有限,您也可以选择英特尔-NUC。

首先,也是最重要的,如果您想要托管任何Web服务,您需要确保不会落后于运营商级NAT。我的提供商默认使用它,但我每月多付5 GB就可以得到一个静态IP。

接下来,让我们假设您有一个DNS注册商,并为自己获得了域timmy.com。与云中的典型部署不同,我们只有一个IP地址可供使用,因此请设置记录,将来自timmy.com和*.timmy.com(任何子域)的流量定向到您的公共IP地址,以便流量到达您的路由器。

分配给家庭网络中重要设备的静态IP范围,通常从您的路由器开始,我使用的是192.168.0.1-255。应该为群集中的所有计算机/节点提供静态IP。

DHCP分配范围,适用于连接到您的网络的各种设备“仅仅是为了使用互联网”,比如您的手机。我将路由器中的DHCP服务器配置为使用192.168.0-255。

Kubernetes服务将拥有自己的浮动IP地址,而实际的服务可能位于集群中的任何节点上,这取决于负载和Kubernetes调度器的突发情况。我们将在ARP模式t中使用MetalLB