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

sreser · · 51 次点击 · · 开始浏览    

 

获课:weiranit.fun/2865/

获取ZY↑↑方打开链接↑↑

一、高可用集群架构设计

  1. 控制平面高可用

  • 部署 3 个以上控制节点(Master),通过kubeadm初始化集群

  • 使用kubeadm init --control-plane-endpoint "lb.example.com:6443"指定负载均衡器地址

  • 配置kubeconfig文件指向负载均衡器

  • 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

进行诊断。

51 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传