在 Hetzner Cloud 上便宜的自托管 Kubernetes
这个博客的起始项目可以在 github.com/qstarsit/hcloud-kube-hetzner 找到。Kubernetes 是一个优秀的工作负载 API,社区构建了一个高度可扩展的标准,抽象了我们应用部署所依赖的底层机器和基础设施。然而,云原生生态系统可能带来供应商锁定的感觉。管理负载均衡、无缝节点自动扩展、广泛的存储选项、集成网络和完善的操作工具等功能都是您为此支付高价的原因。自己运行和操作 Kubernetes,即“艰难之路”,可能会让人感到不知所措且耗时。因此,在这篇文章中,我们来看一下 terraform-hcloud-kube-hetzner,这是一个开源 Terraform 项目,简化了在 Hetzner Cloud 上部署生产就绪的 K3s 集群,其在易用性、可靠性和成本效益之间达到了平衡,同时坚持我们的欧洲本土 🇪🇺。Hetzner 是一家德国基础设施提供商,以提供高性能硬件而闻名,价格合理且可预测。与超大规模云提供商相比,Hetzner 专注于少数几件事情,做得非常好。这使他们在独立黑客和初创公司中成为受欢迎的托管提供商。他们的云服务在近年来已经成熟,并提供了管理资源的稳定 API。它具有私有网络、负载均衡器、网络附加存储和虚拟机,这使其成为希望在更具成本效益的平台上实现适当自动化的团队的可靠替代选择。Hetzner 主要在欧洲运营现代数据中心,同时也提供美国和亚洲的地点。鉴于最近对主权数据中心的关注,Hetzner 作为一家德国公司的事实增强了数据主权的保障。Kube-Hetzner 是一个经过优化、易于使用的 Terraform 模块,用于设置(高度可用的)自动升级集群。它规范了在 Hetzner Cloud 上可靠运行 K3s 所需的许多最佳实践。该项目处理了引导和维护集群所需的大量繁重工作:配置计算资源、配置私有网络、设置负载均衡器、管理节点池以及将所有组件连接在一起。升级默认是自动和滚动的,减少了人工干预和维护期间的停机时间。它将 Hetzner 的本机工具直接集成到集群中,包括 hcloud CSI 驱动程序和 hcloud 云控制器管理器 (CCM) 。这使得 Kubernetes 能够通过 Kubernetes 自动配置和管理负载均衡器和块存储等资源。在容器领域,少即是多。操作系统同样作为我们工作负载的基础,其理念也是如此。像 Ubuntu、Debian 或 RedHat 企业版 Linux 等传统服务器发行版包含了许多一般用途的包和服务,其中许多对容器工作负载来说并不是必需的。这导致了以容器为中心的操作系统的开发,例如 Talos、CoreOS、Bottlerocket 和 Flatcar 等。Kube-Hetzner 为其所有节点利用 openSUSE 的 MicroOS。MicroOS 是一款稳定的操作系统,具有小的占用空间,专门用于运行容器工作负载。它具有滚动发布、原子和事务更新以及默认的安全更新。该操作系统旨在可预测、具有韧性,并在每次启动时表现一致。MicroOS 是不可变的,无法在运行时进行修改。更新使用 Btrfs 快照事务性地应用,使得系统要么完全成功,要么回滚到干净状态。如果更新出错,之前的快照会自动引导,无需人工干预。只读根文件系统也减少了我们的攻击面。在容器被攻陷后,无法修改主机二进制文件或操作系统配置。即使攻击者获得了主机级别的访问权限,任何更改在重启时都会被丢弃。我们的应用工作负载独立于主机操作系统管理,并未安装在根文件系统上。这防止了配置漂移,并确保我们所有节点保持可互换,并且能够合理地反复部署、更换或恢复。我们的集群核心由 K3s 组成,这是 Rancher 的轻量级 Kubernetes 发行版。K3s 专为计算资源受限的环境(如边缘或物联网设备)设计。K3s 将 Kubernetes API 服务器、kube 代理和 kubelet 等组件打包为一个二进制文件,以减少部件之间的依赖和启动集群所需的步骤。它是一个完全合规的发行版,简化了我们的操作。尽管设计精简,K3s 仍然是生产就绪的,并非常适合小型到中型集群。它压缩和抽象了运行标准 Kubernetes 安装的许多开销。此外,K3s 和 Kube-Hetzner 具有合理的默认设置。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡