搭建kubernetes高可用集群(一)

事先声明

按照下面的步骤,相信一定能成功,我已经部署了三次了,如果不行,👊我啊,😄
参考文献来源

统一的环境配置

kubernetes 版本 v1.16.0

主机名 IP 角色 系统 CPU/内存 磁盘
kubernetes-master-150 192.168.10.150 master centos7 2核2G 20G
kubernetes-master-151 192.168.10.151 master centos7 2核2G 20G
kubernetes-master-152 192.168.10.152 master centos7 2核2G 20G
kubernetes-node-160 192.168.10.160 node centos7 2核2G 20G
kubernetes-node-161 192.168.10.161 node centos7 2核2G 20G
kubernetes-node-162 192.168.10.162 node centos7 2核2G 20G
kubernetes VIP 192.168.10.200
calico 10.244.0.0/16

1. master和node集群都需要的前置条件

1.1 关闭防火墙

# 关闭防火墙
systemctl disable firewalld
systemctl stop firewalld

1.2 关闭selinux

#临时禁用selinux
setenforce 0
#永久关闭 修改/etc/sysconfig/selinux文件设置
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

1.3 关闭交换区

# 禁用交换分区
swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行。
sed -i 's/.*swap.*/#&/' /etc/fstab

1.4 修改内核参数

# 修改内核参数
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来应用上面的参数

1.5 同步时间

# 安装 ntpdate
yum install -y ntpdate

# 设置系统时间与网络时间同步(cn.pool.ntp.org 位于中国的公共 NTP 服务器)
ntpdate cn.pool.ntp.org

# 将系统时间写入硬件时间
hwclock --systohc

# 确认一下时间
# 输出如下(自行对照与系统时间是否一致)
2020年 01月 21日 星期二 14:51:31 CST

1.6安装IP虚拟服务器(IPVS)


yum install -y ipset ipvsadm

# 配置并加载 IPVS 模块
mkdir -p /etc/sysconfig/modules/
vim /etc/sysconfig/modules/ipvs.modules

# 输入如下内容
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4

# 执行脚本,注意:如果重启则需要重新运行该脚本
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1.7 修改虚拟主机名字

# 修改主机名字
hostnamectl set-hostname kubernetes-master-150
# 查看主机名字
hostname
# 查看系统的版本以及主机名字
hostnamectl 

2 安装HAProxy和keepalived来实现高可用

下面的步骤在kubernetes-master-150上执行

2.1 创建HAProxy启动脚本

mkdir -p /usr/local/kubernetes/lb
vim /usr/local/kubernetes/lb/start-haproxy.sh

# 输入内容如下
#!/bin/bash
# 修改为你自己的 Master 地址
MasterIP1=192.168.141.150
MasterIP2=192.168.141.151
MasterIP3=192.168.141.152
# 这是 kube-apiserver 默认端口,不用修改
MasterPort=6443

# 容器将 HAProxy 的 6444 端口暴露出去
docker run -d --restart=always --name HAProxy-K8S -p 6444:6444 \
        -e MasterIP1=$MasterIP1 \
        -e MasterIP2=$MasterIP2 \
        -e MasterIP3=$MasterIP3 \
        -e MasterPort=$MasterPort \
        wise2c/haproxy-k8s


# 设置权限
cd /usr/local/kubernetes/lb
chmod +x start-haproxy.sh

2.2 创建 Keepalived 启动脚本

下面的步骤在kubernetes-master-150上执行

mkdir -p /usr/local/kubernetes/lb
vim /usr/local/kubernetes/lb/start-keepalived.sh

# 输入内容如下
#!/bin/bash
# 修改为你自己的虚拟 IP 地址(只要在同一网段就可以了)
VIRTUAL_IP=192.168.10.200
# 虚拟网卡设备名
INTERFACE=ens33
# 虚拟网卡的子网掩码
NETMASK_BIT=24
# HAProxy 暴露端口,内部指向 kube-apiserver 的 6443 端口
CHECK_PORT=6444
# 路由标识符
RID=10
# 虚拟路由标识符
VRID=160
# IPV4 多播地址,默认 224.0.0.18
MCAST_GROUP=224.0.0.18

docker run -itd --restart=always --name=Keepalived-K8S \
        --net=host --cap-add=NET_ADMIN \
        -e VIRTUAL_IP=$VIRTUAL_IP \
        -e INTERFACE=$INTERFACE \
        -e CHECK_PORT=$CHECK_PORT \
        -e RID=$RID \
        -e VRID=$VRID \
        -e NETMASK_BIT=$NETMASK_BIT \
        -e MCAST_GROUP=$MCAST_GROUP \
        wise2c/keepalived-k8s



# 设置权限
cd /usr/local/kubernetes/lb
chmod +x start-keepalived.sh

2.3 复制脚本到其他master

在master151和master152上执行

mkdir -p /usr/local/kubernetes/lb

在master150上执行

scp start-haproxy.sh start-keepalived.sh 192.168.10.151:/usr/local/kubernetes/lb
scp start-haproxy.sh start-keepalived.sh 192.168.10.152:/usr/local/kubernetes/lb

在所有master内运行
sh /usr/local/kubernetes/lb/start-haproxy.sh && sh /usr/local/kubernetes/lb/start-keepalived.sh

2.4 检查是否运行成功

2.4.1 检查容器

docker ps

# 输出如下
7da2c82c9628        wise2c/keepalived-k8s    "/usr/bin/keepalived…"   4 hours ago         Up 2 hours                                   Keepalived-K8S
6ce4aadb3f3d        wise2c/haproxy-k8s       "/docker-entrypoint.…"   4 hours ago         Up 2 hours          0.0.0.0:6444->6444/tcp   HAProxy-K8S

2.4.2 检查网卡绑定的虚拟IP

ip a | grep ens33

# 输出如下
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.10.150/24 brd 192.168.10.255 scope global noprefixroute ens33
    inet 192.168.10.200/24 scope global secondary ens33

3. 部署节点

我就知道你还想要深入学习,点击我阅读下一篇😄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章