1.简介
本章节使用kubeadm搭建一套三主三从的高可用kubernetes集群。相比单master而言,多master更加有利于我们生产环境的稳定性。就算master节点宕机一台,我们依然有其他master节点保证我们的集群环境。多master节点需要依赖于keepalive还生成一个vip,也就是虚拟ip,做过nginx+keepalive的小伙伴们都知道,还需要一个haproxy来实现负载策略。
2.整体架构信息
Linux版本CentOS7,内核版本推荐4.10+(3.10有个kmem的bug)
Kubernetes 默认安装最新
网段配置:pod网段10.244.0.0/16
service网段10.96.0.0/12
节点名称 | 角色 | IP地址 | 安装组件 |
---|---|---|---|
负载Vip | Vip | 192.168.3.100 | |
master1 | master | 192.168.3.18 | kubeadm、kubelet、kubectl、docker、haproxy、keepalived |
master2 | master | 192.168.3.19 | kubeadm、kubelet、kubectl、docker、haproxy、keepalived |
master3 | master | 192.168.3.20 | kubeadm、kubelet、kubectl、docker、haproxy、keepalived |
node1 | node | 192.168.3.21 | kubeadm、kubelet、kubectl、docker |
node2 | node | 192.168.3.22 | kubeadm、kubelet、kubectl、docker |
node3 | node | 192.168.3.23 | kubeadm、kubelet、kubectl、docker |
3.环境初始化
3.1配置hosts文件
在每个主机上配置
cat >>/etc/hosts<<EOF
192.168.3.18 master1
192.168.3.19 master2
192.168.3.20 master3
192.168.3.21 node1
192.168.3.22 node2
192.168.3.23 node3
EOF
3.2关闭selinux和防火墙
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
3.3关闭swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
3.4创建秘钥
在master1节点上创建秘钥,设置免密登录其他服务器,主要是为了后面的远程拷贝证书
ssh-keygen -t rsa
一路回车即可。
for n in `seq -w 2 3`;do ssh-copy-id master$n;done
3.5配置内核转发参数
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF
sysctl --system
3.6加载ipvs模块
cat