本篇是系列中的第六篇内容,继续聊聊如何把一个简化过的私有云环境部署在笔记本里,以满足低成本、低功耗、低延时的实验环境。
在前几篇内容中,我们聊过了:虚拟化、监控、基础的存储、持续集成等内容,接下来的内容中,我们聊聊 K8s 集群的部署和配置相关的内容。
前置准备
因为一台笔记本的计算资源有限,想要顺滑的使用在一台设备中安装和使用 K8s 集群,其实还是有一些挑战的。为此我们需要做一些前置的准备,包括硬件资源分配、 络规划、软件准备。
我们先来聊聊硬件方面的准备。
硬件准备
在准备好设备之后,便需要选择合适自己的虚拟化方案,在之前的文章《AMD 5800u 笔记本折腾 Proxmox VE 7.0 虚拟化》、《NUC 折腾笔记 – 安装 ESXi 7》中,我们提到过 PVE 和 ESXi 两个常见的简单方案的安装部署。这里选择哪一种都不影响最终的结果,这里根据自己的实际需求选择即可。 在一些设备上 PVE 能够相对简单的提供显卡的“直通”,所以如果你需要折腾“硬件直通”,可以选择 PVE。因为之前构建过 ESXi 的镜像,也申请了免费的 License,所以这里我的选择是 ESXi。更多的细节可以参考《装在笔记本里的私有云环境:准备篇》中关于“虚拟化环境”的介绍和比较部分。
在生产环境中,我们会使用不少公有云的 DNS 服务,不过既然我们做好了私有化的准备,不妨做的更彻底一些,让它能够“完全离线”,运行时不依赖外部在线服务。我这里的考虑是增加一台廉价的外部设备,比如使用一台物理路由器:将需要稳定提供服务的 DHCP 移动到外部。
- K8s 集群:Node x3 (2核心8GB内存120GB磁盘)
- 外部存储:Storage x1 (4核心 4GB 内存 100GB 磁盘)
- 通用服务:Base x1 (4核心 4GB 内存 300 GB 磁盘)
在分配磁盘的时候,K8s 集群和其他两台虚拟机选择不同的磁盘,可以避免磁盘 IO 用满导致的服务性能骤降、甚至引发不可用的问题。
这里有一个小细节,我们在创建虚拟机的时候,尽量不要完全占满磁盘,预留一些空间除了有助于磁盘性能释放之外,还能避免虚拟机创建后,因为各种原因,磁盘用量超出我们预先设定时,影响虚拟化系统的整体可靠性。
当我们完成对主机完成虚拟化和虚拟机资源分配之后,来聊聊 络设计的细节。
络设计
前文提到,我计划使用一台小路由器来“固定 络环境”。在实践的过程中需要配置两个部分的内容。
第一部分是针对 ESXi(设备主机)和各个虚拟机进行 IP 地址的分配。
接着,我们来解决端口绑定,让我们能够通过在外部 络访问路由器的地址配合不同的端口,就能够实现管理路由器、ESXi、虚拟机,或者通过 Web 访问跑在虚拟机或者 K8s 集群上的服务的功能。
Ansible 是目前流行的 IT 自动化工具之一,也是久负盛名的开源软件之一,我们可以使用它来完成系统配置、软件部署、服务编排等任务,以及处理后续 CI/CD 中进行集成的相关任务。
本篇文章里,我们简单聊聊如何在初始化环节,通过它一步一步完成服务部署,避免在多台机器上重复执行命令,进行偷懒。
如何安装和简单配置 Ansible
最简单的使用场景下,我们只需要在控制端(比如堡垒机)完成 ansible 的安装即可。
因为我们选择了 Ubuntu 这种用户量非常大的 Linux 发行版,所以安装 ansible 的过程就特别简单,只需要一条命令:
在完成安装之后,我们先需要为 ansible 创建配置。首先要完成 ansible 的配置目录创建和目录的权限调整:
接着,执行命令,将主机名、分组、IP 信息写入配置(参考你的实际情况):
在执行完上面的命令之后,ansible 的基础配置就完成了。我们可以通过下面的命令来进行服务配置验证:
不出意外的话,将得到下面的日志输出:
当你想进行连通性测试,验证主机是否在线的时候,可以执行 。如果在上文中,你有正确配置密钥登录,那么将得到类似下面的日志结果:
如何使用 Ansible 批量执行命令
如果我们想让 K8s 分组的机器都执行系统软件包更新的命令,可以这样编写命令(直接使用上文中 ansible 配置中的小组名称即可):
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!