ubuntu

Ubuntu Kubernetes集群的高可用性配置

小樊
58
2025-07-25 22:25:27
栏目: 智能运维

在Ubuntu上部署高可用的Kubernetes集群涉及多个步骤和组件。以下是一个详细的指南,帮助你实现这一目标:

环境规划与准备

  1. 集群节点规划

    • Master节点:至少配置3个Master节点以确保高可用性。
    • Node节点:建议配置2个或更多Node节点。
    • 负载均衡节点:使用HAProxy和Keepalived实现API Server高可用。
  2. 系统配置要求

    • 操作系统:Ubuntu Server 18.04 LTS。
    • CPU:Master节点至少2核,Node节点建议2核或更多。
    • 内存:Master节点至少2GB,Node节点建议4GB或更多。
    • 磁盘:至少20GB可用空间。
    • 网络:所有节点间网络互通。
  3. 系统基础配置

    • 关闭交换空间:
      sudo swapoff -a
      sudo sed -i '/swap/s/^/#/' /etc/fstab
      
    • 关闭防火墙:
      sudo ufw disable
      
    • 配置DNS:
      sudo sed -i 's/#DNS=/DNS=114.114.114.114/' /etc/systemd/resolved.conf
      sudo systemctl restart systemd-resolved
      
    • 安装Docker:
      sudo apt-get update
      sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
      curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
      sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
      sudo apt-get update
      sudo apt-get install -y docker-ce
      
    • 配置Docker镜像源:
      sudo mkdir -p /etc/docker
      sudo tee /etc/docker/daemon.json <<EOF
      {
          "registry-mirrors": ["https://registry.docker-cn.com"]
      }
      EOF
      sudo systemctl restart docker
      
    • 安装kubeadm、kubelet、kubectl:
      sudo apt-get update && sudo apt-get install -y apt-transport-https
      curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
      sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF
      deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
      EOF
      sudo apt-get update
      sudo apt-get install -y kubelet kubeadm kubectl
      

高可用架构实现

  1. 高可用架构设计

    • API Server高可用:采用HAProxy+Keepalived方案。
      • Keepalived:提供虚拟IP(VIP)并监控HAProxy健康状态。
      • HAProxy:负载均衡API Server请求到多个Master节点。
    • Master节点:运行API Server、Controller Manager和Scheduler。
  2. HAProxy配置

    • 创建HAProxy启动脚本:
      #!/bin/bash
      MasterIP1=192.168.141.150
      MasterIP2=192.168.141.151
      MasterIP3=192.168.141.152
      
      cat <<EOF > /etc/haproxy/haproxy.cfg
      frontend k8s-api
          bind *:6443
          default_backend k8s-api-backend
      
      backend k8s-api-backend
          balance roundrobin
          server master1 ${MasterIP1}:6443 check
          server master2 ${MasterIP2}:6443 check
          server master3 ${MasterIP3}:6443 check
      EOF
      
      sudo systemctl restart haproxy
      
  3. 初始化Master节点

    • 在一个Master节点上执行初始化操作:
      sudo kubeadm init --control-plane-endpoint "<LOAD_BALANCER_DNS>:<PORT>" --upload-certs
      
  4. 加入Worker节点

    • 在其他Master节点上执行初始化操作:
      sudo kubeadm join <LOAD_BALANCER_DNS>:<PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
      
  5. 配置网络插件

    • 选择并配置网络插件,如Flannel或Calico。例如,使用Flannel:
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      
  6. 配置etcd集群

    • 安装和配置etcd集群,建议部署一个奇数数量的etcd节点(通常为3或5个节点):
      sudo apt-get update && sudo apt-get install -y etcd
      sudo mkdir -p /var/lib/etcd
      sudo etcd --name node1 --data-dir=/var/lib/etcd --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380
      sudo etcd --name node2 --data-dir=/var/lib/etcd --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380
      sudo etcd --name node3 --data-dir=/var/lib/etcd --listen-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380
      

部署应用程序和服务

  1. 部署多个副本:为应用创建多个副本,确保在某个副本不可用时,其他副本可以继续提供服务。
  2. 使用负载均衡器:通过负载均衡器将流量分发到多个副本,确保负载均匀分布。
  3. 配置Pod Disruption Budget (PDB):设置PDB以定义在更新或维护期间必须保持运行的最小Pod数量,以减少停机时间。
  4. 使用kube-vip:为Kubernetes控制平面提供高可用和负载均衡的开源项目,适用于内部和外部负载均衡。

通过以上步骤,你可以在Ubuntu上成功部署一个高可用的Kubernetes集群,确保集群在面对各种故障时,能够持续运行或快速恢复。

0
看了该问题的人还看了