天亿互联:Kubernetes集群搭建与自动伸缩实战教程
前言
在云原生时代,Kubernetes 已成为容器编排的事实标准。本文将基于天亿互联的云服务器,手把手教你搭建一个高可用的 Kubernetes 集群,并实现基于 CPU 利用率的自动伸缩(HPA)。本文适合有一定 Linux 基础的运维或开发人员。
一、环境准备
在天亿互联控制台创建三台云服务器,推荐配置:2核4G,操作系统 CentOS 7.9,内网互通。分别作为 Master 和 Worker 节点。
节点角色 主机名 IP 地址(示例)
Master master01 192.168.1.10
Worker worker01 192.168.1.11
Worker worker02 192.168.1.12
所有节点执行以下初始化操作:
- 关闭防火墙和 SELinux:
systemctl stop firewalld && systemctl disable firewalld && setenforce 0 - 禁用 swap:
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab - 设置主机名并添加 hosts 解析。
- 安装 Docker 和 kubeadm/kubelet/kubectl(版本 1.28.0)。
二、使用 kubeadm 搭建集群
步骤1:初始化 Master 节点
在 master01 上执行:
kubeadm init --apiserver-advertise-address=192.168.1.10 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
初始化成功后,会输出一条 kubeadm join 命令,请保存。然后配置 kubectl:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
步骤2:安装网络插件(Flannel)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
验证 Pod 状态:kubectl get pods -n kube-flannel。
步骤3:加入 Worker 节点
在 worker01 和 worker02 上执行上面保存的 join 命令,例如:
kubeadm join 192.168.1.10:6443 --token xxxxx --discovery-token-ca-cert-hash sha256:xxxxx
在 Master 上验证节点:kubectl get nodes,应看到所有节点 Ready。
三、配置水平自动伸缩(HPA)
步骤1:安装 Metrics Server
HPA 依赖 Metrics Server 收集资源指标。执行:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
修改 deployment 添加 --kubelet-insecure-tls 参数:
kubectl edit deployment metrics-server -n kube-system
# 在 args 中添加:
- --kubelet-insecure-tls
验证:kubectl top nodes 能显示 CPU/内存。
步骤2:部署测试应用
创建一个 Nginx 部署,并设置资源限制:
kubectl create deployment nginx-hpa --image=nginx:latest --replicas=1
kubectl set resources deployment nginx-hpa --requests=cpu=100m,memory=128Mi --limits=cpu=500m,memory=256Mi
kubectl expose deployment nginx-hpa --port=80 --type=NodePort
步骤3:创建 HPA 规则
kubectl autoscale deployment nginx-hpa --cpu-percent=50 --min=1 --max=5
查看 HPA:kubectl get hpa,初始状态应为 ,等待1-2分钟后变为 0%。
步骤4:压力测试验证自动伸缩
使用测试工具(如 ab 或 hey)模拟高并发:
# 安装 hey
wget -O hey https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x ./hey
# 获取 NodePort 端口
kubectl get svc nginx-hpa
# 对 Worker 节点 IP 的 NodePort 发起请求
./hey -n 100000 -c 100 http://192.168.1.11:30356/
另一个终端观察 HPA 变化:
kubectl get hpa -w
# 输出示例:
# nginx-hpa Deployment 50%/50% 1 5 2
# nginx-hpa Deployment 85%/50% 1 5 4
当 CPU 超过 50% 后,Pod 数量会自动增加,最大至 5 个。停止压力后,HPA 会逐步缩容至 1 个。
四、总结
通过以上步骤,你已在天亿互联云平台上成功搭建了一个可伸缩的 Kubernetes 集群。生产环境中建议使用高可用 Master 架构,并结合 HPA 与 Cluster Autoscaler 实现节点级别的自动扩缩。如需进一步优化,可配置自定义指标(如 QPS)或使用 Prometheus Adapter 实现更复杂的伸缩策略。