架构参考图

配置load balancer

这里我们使用 keepalived + nginx

## 以centos举例
yum install -y epel-release
yum install -y keepalived nginx

修改nginx的配置, 主要是添加stream 代理

stream {
	upstream k8sApiServer {
	    server k8s-master1:6443;
	    server k8s-master2:6443;
	    server k8s-master3:6443;
	}
	
	server {
	    listen 8443;
	    proxy_connect_timeout 1s;
	    proxy_timeout 3s;
	    proxy_pass k8sApiServer;
	}
}

启动nginx 并设置开机重启. 然后修改各个master节点上的 /etc/keepalived/keepalived.conf

## master1
global_defs {
    router_id txz-data0
}

vrrp_instance VI-kube-master {
    state MASTER  # 如果是备用的, 则填写 BACKUP
    priority 110  # 选举优先级,越大越优先
    dont_track_primary
    interface eth0   # 绑定的网卡
    virtual_router_id 51
    advert_int 1  # 检测间隔时间
    virtual_ipaddress {
        192.168.0.100  # 绑定的虚拟IP, 需要和宿主机在同一网段内
    }
}

所有master 节点设置完毕之后启动 keepalived 服务

systemctl start keepalived
systemctl enable keepalived

通过 ip addr show 查看网卡, 可以看到虚拟IP已经被绑定在了某台机器上

安装docker

# 以centos为例

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \\
    --add-repo \\
    <https://download.docker.com/linux/centos/docker-ce.repo>
# 查看合适的docker版本
yum list docker-ce --showduplicates | sort -r
# 安装
yum install docker-ce

# ubuntu
apt-get install -y docker.io

下载kubeadm

## ubuntu
curl -s <https://packages.cloud.google.com/apt/doc/apt-key.gpg> | apt-key add -
cat > /etc/apt/sources.list.d/kubernetes.list <<EOF
# deb <http://apt.kubernetes.io/> kubernetes-xenial main
deb <http://mirrors.ustc.edu.cn/kubernetes/apt> kubernetes-xenial mai
EOF
apt-get install -y kubeadm # 会附带下载 kubectl kubelet
systemctl enable kubelet

## centos
cat > /etc/yum.repos.d/kubernetes.repo <<EOF 
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        <http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg>
EOF
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet.service

下载指定版本