这里我们使用 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已经被绑定在了某台机器上
# 以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
## 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
下载指定版本