搭建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. 部署節點

我就知道你還想要深入學習,點擊我閱讀下一篇😄

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