高可用 Kubernetes 集群搭建教程

本文详细介绍了如何搭建高可用 Kubernetes 集群,包括选择堆叠拓扑,服务器准备,安装 Docker,升级内核,配置 Kubeadm,安装负载均衡器 KeepAlived 和 HaProxy,初始化控制面和工作节点,以及安装网络插件和测试部署。
摘要由CSDN通过智能技术生成

高可用 Kubernetes 集群搭建教程

集群架构

  • 高可用拓扑选项

    • 堆叠(Stacked) etcd 拓扑

      • 在这里插入图片描述
    • 外部 etcd 拓扑

      • 在这里插入图片描述
  • 优缺点

    • 堆叠(Stacked) etcd 拓扑
      • 更加节省服务器资源,但节点故障同时影响ctcd和控制面节点
    • 外部 etcd 拓扑需要更多服务器资源,
      • 需要更多服务器资源,但节点故障时对集群影响更小,可用性更高
  • 当前选择

    • 堆叠(Stacked) etcd 拓扑

安装步骤

服务器准备

服务器列表
  • 主机名 IP CPU 内存(G) 备注
    k8s-master-01 172.18.212.94 4 8 控制面节点1(keepalived-master+haproxy)
    k8s-master-02 172.18.212.95 4 8 控制面节点2(keepalived-backup+haproxy)
    k8s-master-03 172.18.212.96 4 8 控制面节点3
    k8s-worker-01 172.18.212.97 4 8 工作节点1
    k8s-worker-02 172.18.212.98 4 8 工作节点2
    k8s-worker-03 172.18.212.99 4 8 工作节点3
    • 如果条件允许,最好把 keepalivedhaproxy 部署在独立的两台机器。
设置主机名和 hosts
  • 设置主机名。例如:

    • hostnamectl set-hostname k8s-master-01
      
  • 设置 hosts,例如

    • cat <<EOF >> /etc/hosts
      172.18.212.94 k8s-master-01
      172.18.212.95 k8s-master-02
      172.18.212.96 k8s-master-03
      172.18.212.97 k8s-worker-01
      172.18.212.98 k8s-worker-02
      172.18.212.99 k8s-worker-03
      EOF
      
校验 mac 地址和 uuid 的唯一性
  • 你可以使用命令 ip linkifconfig -a 来获取网络接口的 MAC 地址
  • 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验
  • 一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装 失败
设置防火墙为 iptables 并设置空规则
  • systemctl stop firewalld && systemctl disable firewalld
    
  • yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
    
关闭 SELinux 和 交换分区
  • setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    
模块加载
  • modprobe br_netfilter
    lsmod | grep br_netfilter
    
  • cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
调整内核参数
  • cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl --system
    
安装容器运行时
安装 Docker
  • 删除旧版本

    • sudo yum remove docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-engine
      
  • 安装 yum-utils

    • sudo yum install -y yum-utils
      
  • 配置 yum 源

    • sudo yum-config-manager \
          --add-repo \
          http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
  • 开始安装

    • sudo yum install -y docker-ce docker-ce-cli containerd.io
      
配置 Docker
  • mkdir /etc/docker
    cat <<
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值