K8s运维实战:集群搭建到生产优化,基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)。
·
企业级 K8s 运维实战指南
集群搭建
高可用集群架构设计
采用多 Master 节点 + ETCD 集群模式,建议至少 3 个 Master 节点实现故障容忍。Worker 节点根据业务负载横向扩展,推荐使用自动化工具如 kubeadm 或 kubespray 部署。
网络插件选型
Calico 适合需要网络策略的场景,Flannel 提供简单 Overlay 网络。生产环境需配置 Pod CIDR 和 Service CIDR 非重叠地址段:
apiVersion: kubeadm.k8s.io/v1beta3
networking:
podSubnet: "192.168.0.0/16"
serviceSubnet: "10.96.0.0/12"
存储方案集成
对接云厂商 CSI 驱动或本地存储方案(如 Rook Ceph),通过 StorageClass 实现动态供给:
apiVersion: storage.k8s.io/v1
kind: StorageClass
provisioner: disk.csi.azure.com
parameters:
skuName: Premium_LRS
微服务暴露(Ingress)
Ingress Controller 部署
Nginx Ingress 或 Traefik 是常见选择,通过 Helm 快速安装:
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
--set controller.replicaCount=3
域名与路由配置
定义 Ingress 规则实现基于 Host 和 Path 的路由,示例配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: app.example.com
http:
paths:
- path: /api(/|$)(.*)
pathType: Prefix
backend:
service:
name: api-service
port: 80
TLS 安全加固
使用 Cert-Manager 自动签发 Let's Encrypt 证书:
apiVersion: cert-manager.io/v1
kind: Certificate
spec:
secretName: example-tls
dnsNames:
- app.example.com
issuerRef:
name: letsencrypt-prod
监控告警(Prometheus)
监控体系搭建
通过 Prometheus Operator 部署整套监控栈:
helm install prometheus prometheus-community/kube-prometheus-stack \
--set alertmanager.enabled=true
自定义指标采集
配置 ServiceMonitor 抓取应用指标:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
spec:
endpoints:
- port: web
interval: 30s
selector:
matchLabels:
app: my-service
告警规则配置
设置关键指标阈值告警,示例内存告警规则:
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
spec:
groups:
- name: memory-alerts
rules:
- alert: HighMemoryUsage
expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) < 0.2
for: 5m
labels:
severity: critical
可视化与通知
Grafana 仪表板导入 ID 315 查看集群概览,Alertmanager 配置 Slack/webhook 通知:
route:
receiver: 'slack-notifications'
receivers:
- name: 'slack-notifications'
slack_configs:
- api_url: https://hooks.slack.com/services/XXX
生产环境优化建议
- 启用 PodDisruptionBudget 保障关键服务可用性
- 配置 HPA 基于自定义指标自动扩缩容
- 定期执行 etcd 备份与集群状态检查
- 启用 NetworkPolicy 实现微服务间零信任隔离
更多推荐
所有评论(0)