搭建 Kubernetes (v1.32) + Istio (v1.24.2) 开发测试环境
此文档内容最后更新于 2025-02-12
1. 概述
快速建立一个用于开发测试的 k8s 集群有很多种方法,包括:minikube、kubeadm、Docker desktop、kind、MicroK8s 等,另外也可以使用阿里云或华为云等云计算厂商提供的产品服务。如果仅是用于日常开发测试使用,考虑成本和简单方便还是应考虑自建测试集群环境。
同时还需要考虑:
- 资源占用小
- 环境可迁移
- 团队之间可方便分享
- 单节点和多节点可方便扩展
综合上述的几项关注点,使用 Kubeadm 进行开发测试环境的搭建是比较好的选择。本文将在操作系统 Windows 10 家庭版上从零开始一步一步进行搭建。
2. 最后搭建完的环境和配置项
分类 | 项 | 描述 |
---|---|---|
主机 | 操作系统 |
|
新建 NAT 网络 |
| |
网络适配器 |
| |
(可选)SSH 客户端工具 MobaXterm | MobaXterm Home Edition v25.0 (Portable edition) 下载 MobaXterm_Portable_v25.0.zip | |
(可选)命令行终端工具 Windows Terminal | Windows Terminal 下载 Windows Terminal | |
虚拟机 | Hyper-V 配置 |
|
操作系统 | Ubuntu Server 24.04.1 LTS 最小化安装 下载 ubuntu-24.04.1-live-server-amd64.iso | |
操作系统安装配置 |
| |
网络配置 |
| |
其它设置 |
|
K8s & istio
名称 | 版本 | Release date | 备注 |
---|---|---|---|
containerd 运行时 | containerd 2.0.2 | 2025-01-14 | 下载 containerd-2.0.2-linux-amd64.tar.gz |
containerd.service | 下载 containerd.service | ||
runc v1.2.4 | 2025-01-07 | 下载 runc.amd64 | |
(可选)nerdctl v2.0.3 | 2025-01-21 | 下载 nerdctl-2.0.3-linux-amd64.tar.gz | |
Kubernetes | v1.32.0 | 2024-12-12 | |
cilium-cli | v0.16.24 | 2025-01-30 | 下载 cilium-linux-amd64.tar.gz |
cilium | 1.17.0 | 2025-02-04 | |
istio | 1.24.2 | 2024-12-19 | 下载 istio-1.24.2-linux-amd64.tar.gz |
因为有一些资源在外网,你需要有一个稳定的网络环境,如果在安装过程中遇到困难,比如外网域名无法访问或镜像资源无法拉取的问题,可以与我联系。
3. 主机环境准备
3.1 安装 Hyper-V
这里虚拟机使用 Microsoft Hyper-V,在微软的官方 Hyper-V 安装指南 Install Hyper-V 中给出的安装需求如下:
- Windows 10 (Pro or Enterprise), or Windows 11 (Pro or Enterprise)
- 64-bit Processor with Second Level Address Translation (SLAT).
- CPU support for VM Monitor Mode Extension (VT-c on Intel CPUs).
- Minimum of 4 GB memory.
- Note:The Hyper-V role can't be installed on Windows 10 Home or Windows 11 Home.
如果你的操作系统是专业版或企业版,可以按照微软官方安装指南中的方法进行安装,如果是家庭版,官方给出的说法是不能安装,实际上也是可以装的,并且功能也都是完全可用,但需要特殊的方式。因为我们大多数笔记本安装的操作系统都是家庭版,下面是家庭版安装 Hyper-V 的方法,这个方法同样适用于 Windows 10 和 Windows 11 家庭版。
- 打开 Windows 记事本,粘贴下面内容到记事本中,并保存到磁盘目录下,保存的文件名为:hv.bat,如下图片所示。
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt
for /f %%i in ('findstr /i . hv.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hv.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause
- 右键点击这个 hv.bat 文件,选择以管理员身份运行。
- 等待运行完成重启操作系统后,Hyper-V 将自动安装。可以在应用中找到 Hyper-V 管理器。
- 如果在上一步的应用中没有找到 Hyper-V 管理器,可以按下面步骤操作,打开控制面板,点击启用或关闭 windows 功能。勾选Hyper-V,并确定。
3.2 (可选)安装 Windows Terminal 命令行终端工具
可参考官方文档 安装并开始设置 Windows 终端 。此步骤可选,也可使用 Windows 操作系统自带的 Wiondows PowerShell 工具代替。
3.2 创建 NAT 网络
我们要在 Hyper-V 中创建 Ubuntu Server 作为 k8s 集群节点。并且我们希望的网络具有下面的几项特性:
- 虚拟机之间、虚拟机与宿主机之间可以网络互通。
- 虚拟机要能访问外网,
- 在需要时,可以增加多个 k8s 虚拟机节点。为了方便对节点进行管理,虚拟机要配置成静态IP。
Hyper-V 安装完成后会有一个默认虚拟交换机(默认的名称为:Default Switch),这个默认的虚拟交换机将自动使用 NAT 网络地址转换向虚拟机提供计算机网络的访问权限。并且此默认虚拟交换机提供 DHCP 和 DNS功能,虚拟机够通过 DHCP 可获得 IP。
这个默认虚拟交换机对应 的网络适配器的 IP 地址是操作系统自动分配的(可能是 172.XXX.XXX.XXX),它有操作系统本地冲突检测机制,是操作系统从一个 IP 地址范围中自动选择一个 IP 来进行分配,并将此地址用作连接到它上的虚拟机的 DHCP、默认网关和 DNS 服务器。
另外,这个默认虚拟交换机 Default Switch 不能删除或管理 DHCP,意味着使用这个虚拟交换机的虚拟机不能配置静态IP地址。
基于上面的信息,我们需要的是可以指定静态IP,因此不能使用这个 Default Switch ,需要创建一个自定义的虚拟交换机,使虚拟机可以访问外部网络,并使用自己分配的 IP 地址,而不是通过 DHCP 获得 IP 地址。
例如用 10.10.0.0/16 作为虚拟机也就是 k8s 集群节点的 IP 地址范围,可以做如下分配:
- k8s-master-1 10.10.0.1
- k8s-master-2 10.10.0.2
- k8s-master-3 10.10.0.3
- k8s-node-1 10.10.0.4
- k8s-node-2 10.10.0.5
我们需要先创建一个 NAT 网络,也可以参考官网文档 设置 NAT 网络 进行操作。
注意:由于 Windows 仅支持一个内部 NAT 子网前缀,所以 不能创建多个 NAT ,请确保你只有一个 NAT。
可以查询是否已经创建过 NAT。以管理员身份运行 Windows Terminal 命令行工具。
# 查看当前 NAT 网络
Get-NetNat
# 如果存在,可以选择删除存在的 NAT 网络, -Name 参数指定要移除的 NAT 网络名称
# Remove-NetNat -Name [your nat name]
下面命令创建一个名为 NATNetwork 的 NAT 网络,并将网络地址范围设置为 10.10.0.0/16。
# 创建 NAT 网络,名称为 NATNetwork,网络地址为 10.10.0.0/16
New-NetNat -Name NATNetwork -InternalIPInterfaceAddressPrefix 10.10.0.0/16