高可用 Kubernetes 集群搭建教程
集群架构
-
-
堆叠(Stacked)
etcd
拓扑 -
外部
etcd
拓扑
-
-
优缺点
- 堆叠(Stacked)
etcd
拓扑- 更加节省服务器资源,但节点故障同时影响
ctcd
和控制面节点
- 更加节省服务器资源,但节点故障同时影响
- 外部
etcd
拓扑需要更多服务器资源,- 需要更多服务器资源,但节点故障时对集群影响更小,可用性更高
- 堆叠(Stacked)
-
当前选择
- 堆叠(Stacked)
etcd
拓扑
- 堆叠(Stacked)
安装步骤
服务器准备
服务器列表
-
主机名 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 - 如果条件允许,最好把
keepalived
和haproxy
部署在独立的两台机器。
- 如果条件允许,最好把
设置主机名和 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 link
或ifconfig -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 <<