debian

Debian上如何实现K8S的高可用部署

小樊
62
2025-08-10 02:42:11
栏目: 智能运维

在Debian上实现K8S高可用部署需从硬件准备、组件安装、高可用配置及监控等方面操作,以下是关键步骤:

  1. 环境准备

    • 至少3个Debian节点(主节点+工作节点),推荐Debian 12+,配置2核CPU、2GB+内存、20GB+磁盘。
    • 关闭swap分区:sudo swapoff -a并修改/etc/fstab永久生效。
    • 配置静态IP及主机名映射,确保节点间网络互通。
  2. 安装基础组件

    • 安装containerd运行时:
      sudo apt update && sudo apt install -y containerd  
      sudo tee /etc/modules-load.d/containerd.conf <<EOF  
      overlay  
      br_netfilter  
      EOF  
      sudo modprobe overlay br_netfilter  
      sudo sysctl --system  
      
    • 添加Kubernetes源并安装核心组件(kubelet、kubeadm、kubectl):
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -  
      echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list  
      sudo apt update && sudo apt install -y kubelet kubeadm kubectl  
      sudo apt-mark hold kubelet kubeadm kubectl  
      
  3. 初始化Master节点

    • 在主节点执行初始化命令(指定Pod网络CIDR):
      sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint="LOAD_BALANCER_DNS:6443"  
      
      LOAD_BALANCER_DNS为负载均衡器地址,需后续配置)。
    • 配置kubectl:
      mkdir -p $HOME/.kube  
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  
      sudo chown $(id -u):$(id -g) $HOME/.kube/config  
      
  4. 部署网络插件

    • 使用Calico等插件实现Pod通信:
      kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml  
      
  5. 高可用配置

    • etcd集群:需部署奇数个etcd节点(通常3个),通过kubeadm初始化时指定--control-plane-endpoint实现多节点冗余。
    • 负载均衡器:在主节点部署HAProxy或Nginx,配置API Server流量分发,例如HAProxy配置:
      sudo apt install haproxy  
      sudo tee /etc/haproxy/haproxy.cfg <<EOF  
      frontend k8s-apiserver  
        bind *:6443  
        mode tcp  
        default_backend k8s-masters  
      backend k8s-masters  
        balance roundrobin  
        server master1 MASTER_IP1:6443 check  
        server master2 MASTER_IP2:6443 check  
      EOF  
      sudo systemctl restart haproxy  
      ```。  
      
    • 控制平面高可用:通过kubeadm将其他Master节点加入集群时指定--control-plane参数,实现多Master节点的Leader选举。
  6. 监控与管理

    • 部署Prometheus+Grafana监控集群状态,配置告警规则。
    • 定期备份etcd数据:
      ETCDCTL_API=3 etcdctl snapshot save /path/to/backup.db  
      ```。  
      
      

注意事项

0
看了该问题的人还看了