企业级 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 实现微服务间零信任隔离

更多推荐