天亿互联:Kubernetes集群自动化部署与弹性伸缩实战指南
天亿互联:Kubernetes集群自动化部署与弹性伸缩实战指南
在云原生时代,Kubernetes已成为容器编排的事实标准。天亿互联技术团队基于多年生产环境经验,总结出一套高效、可复用的K8s集群自动化部署与弹性伸缩方案。本文将从零开始,手把手带你完成从集群初始化到HPA(Horizontal Pod Autoscaler)配置的全过程,所有代码均可在Ubuntu 22.04环境下直接运行。
一、环境准备与基础配置
首先准备三台服务器:1台Master节点(2C4G),2台Worker节点(2C4G)。确保所有节点已安装Docker和kubeadm、kubelet、kubectl。以下为Master节点初始化命令:
# 关闭交换分区(必须)
sudo swapoff -a
# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter
# 设置sysctl参数
cat <
二、初始化Kubernetes集群
在Master节点执行初始化命令,指定Pod网络CIDR(这里使用Calico):
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.1.10
# 输出中会包含加入Worker节点的token,请保存
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 安装Calico网络插件
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26/manifests/calico.yaml
等待所有Master节点Pod变为Running状态后,在Worker节点执行加入命令:
sudo kubeadm join 192.168.1.10:6443 --token \
--discovery-token-ca-cert-hash sha256:
三、部署示例应用并配置HPA
创建Deployment和Service,使用一个基于Node.js的简单Web应用,并暴露为ClusterIP服务:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 2
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: node-app
image: k8s.gcr.io/hpa-example:latest
ports:
- containerPort: 80
resources:
requests:
cpu: 200m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: web-app-svc
spec:
selector:
app: web-app
ports:
- port: 80
targetPort: 80
应用配置:
kubectl apply -f web-app.yaml
创建HPA,目标CPU使用率设置为50%,Pod数量范围2-10:
kubectl autoscale deployment web-app --cpu-percent=50 --min=2 --max=10
# 或者使用YAML方式
cat <
四、压力测试验证弹性伸缩
使用另一个Pod作为客户端,向Service发送持续请求以模拟高负载:
# 启动临时Pod作为客户端
kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- sh
# 在容器内部执行压力测试
while true; do wget -q -O- http://web-app-svc; done
打开另一个终端窗口,监控Pod数量和HPA状态:
watch -n 2 'kubectl get hpa web-app-hpa && kubectl get pods -l app=web-app'
观察输出,当CPU使用率超过50%时,HPA会自动创建新Pod,直至达到最大副本数10。停止压力测试后,Pod数量会逐步缩减回2个。
五、生产环境最佳实践
天亿互联建议:
- 资源预留:Master节点至少2C4G,Worker节点根据业务预留10%系统资源。
- 监控告警:集成Prometheus+Prometheus Operator,实现基于自定义指标的HPA。
- 安全加固:启用RBAC、Pod安全策略,定期更新kubeadm版本。
- 持久化存储:使用Rook+Ceph或Longhorn提供分布式存储。
通过本教程,你已经掌握了天亿互联推荐的K8s集群自动化部署与弹性伸缩核心技能。如需更深入的生产级优化方案,欢迎访问天亿互联官网获取更多技术资料。