Kubernetes实战:高可用集群搭建,配置,运维与应用

122 阅读2分钟

一、高可用集群架构设计

  1. 控制平面高可用
  • 部署 3 个以上控制节点(Master),通过kubeadm初始化集群
  • 使用kubeadm init --control-plane-endpoint "lb.example.com:6443"指定负载均衡器地址
  • 配置kubeconfig文件指向负载均衡器

Kubernetes实战:高可用集群搭建,配置,运维与应用|完结无密_超星it

  • etcd 集群部署

    收起

    bash

    # 示例:3节点etcd集群配置kubeadm init phase etcd local --config=etcd-config.yaml
    
  • 启用 TLS 加密通信

  • 定期备份 etcd 数据(建议使用etcdctl snapshot save

  • 网络层配置

    收起

    bash

    kubectl apply -f https://projectcalico.docs.tigera.io/manifests/calico.yamlkubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml
    
  • 推荐使用 Calico + MetalLB(裸金属环境)

  • 配置 IPVS 模式负载均衡:

二、实战部署步骤

  1. 准备工作

    收起

    bash

    swapoff -a && sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstabsetenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  • 所有节点安装 Docker/kubelet/kubeadm

  • 关闭 Swap 和 SELinux

  • 初始化控制平面

    收起

    bash

    kubeadm init --config=kubeadm-config.yaml --upload-certs --apiserver-advertise-address=192.168.1.100 --control-plane-endpoint "lb.example.com:6443"
    
  • 加入 Worker 节点

    收起

    bash

    kubeadm join lb.example.com:6443 --token <token> --discovery-token-ca-cert-hash <hash>
    

三、运维最佳实践

  1. 自动伸缩配置

    收起

    bash

    helm install autoscaler autoscaler/cluster-autoscaler --set cloudProvider=aws --set autoDiscovery.clusterName=my-cluster
    
  • 启用 Cluster Autoscaler:

  • 监控与日志

    收起

    bash

    kubectl apply -f https://prometheus-operator.dev/operator.yamlkubectl apply -f https://prometheus-operator.dev/prometheus.yaml
    
  • 部署 Prometheus+Grafana:

  • 滚动更新策略

    收起

    yaml

    # 示例Deployment配置spec:  strategy:    rollingUpdate:      maxUnavailable: 25%      maxSurge: 25%
    

四、故障处理与升级

  1. 节点故障恢复

    收起

    bash

    # 驱逐节点Podkubectl drain node01 --ignore-daemonsets# 维护完成后恢复kubectl uncordon node01
    
  2. 版本升级流程

    收起

    bash

    # 控制平面升级kubeadm upgrade plankubeadm upgrade apply v1.27.3# Worker节点升级kubeadm upgrade node
    

五、应用部署优化

  1. 资源配额管理

    收起

    yaml

    # 示例ResourceQuotaapiVersion: v1kind: ResourceQuotametadata:  name: dev-quotaspec:  hard:    cpu: "10"    memory: 20Gi
    
  2. 网络策略配置

    收起

    yaml

    apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: allow-webspec:  podSelector:    matchLabels:      app: web  ingress:    - from:      - podSelector:          matchLabels:            app: api
    

六、安全增强措施

  1. RBAC 配置

    收起

    bash

    kubectl create rolebinding dev-admin-binding --role=admin --user=dev-user
    
  2. 镜像安全扫描

    收起

    bash

    trivy image --exit-code 1 --severity HIGH myapp:latest
    

注意事项

  1. 确保负载均衡器(如 HAProxy)配置健康检查
  2. 定期轮换 kubeconfig 证书(使用kubeadm certs renew
  3. 生产环境建议使用云厂商托管 Kubernetes 服务(如阿里云 ACK)

建议结合具体场景选择网络插件(如 Cilium 增强安全)和存储方案(如 Longhorn 本地存储)。遇到问题时可通过

kubectl describe

journalctl -u kubelet

进行诊断。