1. 环境准备与基础配置
在VirtualBox上部署Kubernetes集群需要先完成基础环境搭建。我选择AlmaLinux 10作为操作系统,主要考虑其作为RHEL的替代发行版,具有长期支持周期和良好的稳定性。以下是具体操作步骤:
1.1 VirtualBox虚拟机创建
首先需要准备至少3台虚拟机(1个master+2个worker),每台建议配置:
- 内存:4GB(最低要求,生产环境建议8GB+)
- CPU:2核(需要开启虚拟化支持)
- 磁盘:40GB(系统盘20GB + 数据盘20GB)
- 网络:桥接模式或NAT网络(需要能互通)
安装AlmaLinux 10时需要注意:
- 选择最小化安装(Minimal Install)
- 必须安装Development Tools包组
- 禁用SELinux(编辑/etc/selinux/config)
- 关闭防火墙(systemctl disable firewalld)
提示:虚拟机创建完成后建议先做个快照,方便后续回滚操作。
1.2 系统基础配置
在所有节点上执行以下命令:
bash复制# 设置主机名(分别在三个节点执行)
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-worker1
hostnamectl set-hostname k8s-worker2
# 添加hosts解析
cat >> /etc/hosts <<EOF
192.168.1.100 k8s-master
192.168.1.101 k8s-worker1
192.168.1.102 k8s-worker2
EOF
# 禁用swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 加载内核模块
cat > /etc/modules-load.d/k8s.conf <<EOF
br_netfilter
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
modprobe br_netfilter
modprobe ip_vs
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RKE2安装与配置
RKE2是Rancher开发的轻量级Kubernetes发行版,相比原生K8s安装更简单。以下是具体安装步骤:
2.1 Master节点安装
在master节点执行:
bash复制# 下载安装脚本
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION="v1.34.3" sh -
# 启用并启动服务
systemctl enable rke2-server.service
systemctl start rke2-server.service
安装完成后需要检查状态:
bash复制# 查看服务状态
systemctl status rke2-server
# 获取kubeconfig
mkdir -p ~/.kube
cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
chmod 600 ~/.kube/config
# 设置kubectl命令补全
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
2.2 Worker节点加入集群
在worker节点执行:
bash复制# 安装RKE2 agent
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION="v1.34.3" INSTALL_RKE2_TYPE="agent" sh -
# 配置加入集群
mkdir -p /etc/rancher/rke2/
cat > /etc/rancher/rke2/config.yaml <<EOF
server: https://<MASTER_IP>:9345
token: <NODE_TOKEN>
EOF
# 启动服务
systemctl enable rke2-agent.service
systemctl start rke2-agent.service
注意:<MASTER_IP>替换为master节点实际IP,<NODE_TOKEN>从master节点的/var/lib/rancher/rke2/server/node-token获取。
3. 集群验证与网络配置
3.1 基础集群检查
在master节点执行以下命令验证集群状态:
bash复制kubectl get nodes -o wide
kubectl get pods -A
正常输出应显示所有节点状态为Ready,核心组件(coredns、metrics-server等)运行正常。
3.2 网络插件安装
RKE2默认使用Canal(Flannel+Calico)网络插件,但也可以选择其他CNI。如果需要更换为Calico:
bash复制# 下载Calico manifest
curl https://docs.projectcalico.org/manifests/calico.yaml -O
# 修改CIDR配置(与RKE2默认一致)
sed -i 's/192.168.0.0/10.42.0.0/g' calico.yaml
# 部署Calico
kubectl apply -f calico.yaml
验证网络是否正常:
bash复制kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80
kubectl get svc,pods -o wide
4. 常见问题排查
4.1 节点NotReady问题
如果节点状态显示NotReady,通常需要检查:
- 网络连通性(master和worker之间9345端口)
- 容器运行时状态(systemctl status containerd)
- 内核模块是否加载(lsmod | grep ip_vs)
4.2 Pod无法正常启动
可能原因及解决方案:
- 镜像拉取失败:配置正确的镜像仓库
bash复制mkdir -p /etc/rancher/rke2/ cat > /etc/rancher/rke2/registries.yaml <<EOF mirrors: "docker.io": endpoint: - "https://registry-1.docker.io" EOF - 资源不足:检查节点资源使用情况(kubectl describe node)
- 网络策略限制:检查NetworkPolicy配置
4.3 持久化存储配置
配置本地存储卷:
bash复制# 创建存储目录
mkdir -p /data/local-storage
# 创建StorageClass
cat > local-storage.yaml <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
EOF
kubectl apply -f local-storage.yaml
5. 生产环境优化建议
5.1 高可用配置
对于生产环境,建议配置多master节点:
- 准备3个master节点
- 使用外部etcd或嵌入式etcd集群
- 配置负载均衡器(如HAProxy)指向所有master节点
5.2 监控与日志
部署监控方案:
bash复制# 安装Prometheus Operator
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
日志收集建议使用Loki+Promtail:
bash复制helm repo add grafana https://grafana.github.io/helm-charts
helm install loki grafana/loki-stack
5.3 安全加固
- 启用Pod安全策略
- 配置NetworkPolicy限制Pod间通信
- 定期轮换证书(RKE2自动管理)
- 启用审计日志(/var/lib/rancher/rke2/server/audit.log)
