2. 环境准备:Kubernetes集群搭建与CLI工具安装
本章节将指导你完成《平台门户展示Helm故障域隔离的演练状态看板》课程所需的全部基础环境搭建。你将掌握两种轻量级Kubernetes集群(minikube与k3s)的部署方法,并完成kubectl与helm CLI的安装与验证。这是后续所有演练步骤的基石。
2.1 环境概览与选型对比
在开始安装前,请根据你的本地资源与演练目标选择合适的集群方案。下表对比了两种主流轻量级Kubernetes发行版的核心差异:
| 特性 | minikube | k3s |
|---|---|---|
| 定位 | 本地开发与测试 | 边缘计算、IoT、CI/CD |
| 架构 | 单节点(支持多节点实验) | 单节点或高可用集群 |
| 资源占用 | 中等(约2GB内存起步) | 极低(约512MB内存起步) |
| 组件 | 完整Kubernetes组件 | 精简组件(替换docker为containerd) |
| 持久化存储 | 内置CSI驱动 | 内置local-path-provisioner |
| 网络插件 | 默认Calico或Flannel | 内置Flannel(Traefik作为Ingress) |
| 适用场景 | 模拟生产环境、学习完整K8s特性 | 快速启动、资源受限环境 |
选型建议: 如果你的开发机内存大于8GB,推荐使用minikube以获得更完整的Kubernetes体验;若内存小于4GB或希望在虚拟机/树莓派上运行,k3s是更优选择。本课程后续演练在两种集群上均可执行。
2.2 环境准备流程总览
下图展示了从裸机到可运行Helm Chart的完整环境准备链路,包含三个核心阶段:容器运行时安装、集群部署、CLI工具链配置。
2.3 安装容器运行时
Kubernetes集群依赖容器运行时来运行Pod。Docker是最常用的运行时,但k3s默认使用containerd。以下步骤以Docker为例进行安装:
2.3.1 安装Docker(适用于minikube)
# 更新包索引并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 将当前用户加入docker组(避免每次使用sudo)
sudo usermod -aG docker $USER
newgrp docker
# 验证安装
docker --version
注意: 如果使用k3s,无需单独安装Docker。k3s内置了containerd作为运行时,安装脚本会自动配置。若你仍希望k3s使用Docker,可在安装时添加
--docker 参数。
2.4 搭建Kubernetes集群
根据你的选型,选择以下两种方式之一进行集群搭建。
2.4.1 方式一:使用minikube搭建集群
minikube是本地运行Kubernetes的最佳实践工具,支持多种驱动(Docker、Hyper-V、VirtualBox等)。以下以Docker驱动为例:
# 下载并安装minikube二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群(指定Docker驱动,分配2核CPU、4GB内存)
minikube start --driver=docker --cpus=2 --memory=4096
# 检查集群状态
minikube status
# 启用必要插件(如ingress、metrics-server)
minikube addons enable ingress
minikube addons enable metrics-server
2.4.2 方式二:使用k3s搭建集群
k3s以其极简安装流程著称,一条命令即可完成集群部署:
# 使用官方安装脚本安装k3s(默认使用containerd)
curl -sfL https://get.k3s.io | sh -
# 检查节点状态
sudo k3s kubectl get nodes
# 查看kubeconfig文件位置(后续kubectl需要引用)
sudo cat /etc/rancher/k3s/k3s.yaml
# 可选:将k3s的kubeconfig复制到默认位置,避免每次使用sudo
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
关键配置: k3s默认将kubeconfig文件放在
/etc/rancher/k3s/k3s.yaml,且需要sudo权限读取。建议将其复制到 ~/.kube/config 并修改权限,以便后续kubectl和helm无需sudo即可操作集群。
2.5 安装kubectl与Helm CLI
kubectl是操作Kubernetes集群的命令行工具,Helm是Kubernetes的包管理器。两者是后续演练的核心工具。
2.5.1 安装kubectl
# 下载最新稳定版kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 安装kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 验证版本
kubectl version --client
# 配置自动补全(可选,提升操作效率)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
2.5.2 安装Helm CLI
# 使用官方脚本安装Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# 验证安装
helm version
# 添加常用Helm仓库(如Bitnami、稳定版仓库)
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable https://charts.helm.sh/stable
helm repo update
2.6 环境验证清单
完成上述安装后,请按以下清单逐项验证环境是否就绪:
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| Docker运行状态 | docker info |
显示Server Version等信息,无错误 |
| 集群节点状态 | kubectl get nodes |
所有节点状态为 Ready |
| 集群组件健康 | kubectl get componentstatuses |
scheduler、controller-manager、etcd均为 Healthy |
| kubectl版本 | kubectl version --client |
显示客户端版本号,与集群版本偏差在±1以内 |
| Helm版本 | helm version |
显示v3.x版本号 |
| Helm仓库连通性 | helm repo list |
显示已添加的仓库列表,且状态正常 |
| Pod调度测试 | kubectl run nginx-test --image=nginx --restart=Never |
Pod成功创建并进入 Running 状态 |
快速排障: 如果
kubectl get nodes 显示 NotReady,请检查容器运行时是否正常启动(systemctl status docker 或 systemctl status k3s)。对于minikube,可执行 minikube logs 查看详细日志。
2.7 环境拓扑示意
下图展示了最终搭建完成的环境架构,包含CLI工具与集群的交互关系:
2.8 常见问题与避坑指南
- 端口冲突: minikube默认使用8443端口作为API Server端口,如果本地已有服务占用该端口,可通过
minikube start --apiserver-port=8444指定其他端口。 - 资源不足: 如果minikube启动失败,检查Docker资源限制(Linux需确保
cgroups版本为v1或v2兼容模式)。可执行minikube delete后重新启动。 - kubectl版本偏差: kubectl的版本应与集群版本保持在±1个小版本内,否则可能出现API兼容性问题。使用
kubectl version对比客户端与服务端版本。 - Helm仓库认证: 如果添加私有仓库需要认证,使用
helm repo add --username <user> --password <pass>参数。 - k3s的kubeconfig权限: 如果复制kubeconfig后仍提示权限拒绝,检查
~/.kube/config文件权限是否为600(chmod 600 ~/.kube/config)。