k8s高可用集群部署

为什么选择多主节点部署k8s集群

单主:
优势:部署简单,易维护
劣势:缺乏高可用性,主节点出故障,整个集群将无法工作,这可能导致服务中断和数据丢失

多主:
优势:具备高可用性和负载均衡的能力,一个主节点崩溃,不影响整个集群工作,并且etcd集群之间互相同步数据,保证了数据的一致性
劣势:部署麻烦,维护成本高
在这里插入图片描述

k8s单主机与多主节点拓扑对比

可以看到多主节点集群的node节点和master节点之间还需要一层负载均衡去负载API Server的请求。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


环境准备

系统:rocky9.3
性能:主节点4h4G,从节点2h4G

部署架构:三主三从

主节点地址
10.10.40.100 k8s-master00
10.10.40.101 k8s-master01
10.10.40.102 k8s-master02

VIP地址(用于负载均衡的虚拟IP地址,随便指定个局域网内没有使用的地址)
10.10.40.110

从节点地址
10.10.40.103 k8s-node03
10.10.40.104 k8s-node04
10.10.40.105 k8s-node05


部署流程,以下部署所有节点都要执行

0.提前安装所需要用到的软件包
dnf -y install bash* vim wget tar expect
1.关闭防火墙和selinux
systemctl disable --now firewalld

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 

setenforce 0
2.关闭Swap分区
swapoff -a

sed -ri 's/.*swap.*/#&/' /etc/fstab
3.修改主机名并配置hosts以及配置免密登录
hostnamectl set-hostname k8s-master00

cat >> /etc/hosts << EOF 
10.10.40.100 k8s-master00
10.10.40.101 k8s-master01
10.10.40.102 k8s-master02
10.10.40.103 k8s-node03
10.10.40.104 k8s-node04
10.10.40.105 k8s-node05
EOF


# 所有节点执行以下命令生成秘钥

ssh-keygen


# 所有节点执行免密登录脚本

vim login.sh

#!/usr/bin/expect
for i in {
   0..2};do expect -c "
	set timeout 2
	spawn ssh-copy-id k8s-master0$i
	expect {
	"yes/no" {send yes\r;exp_continue}
	"password" {send 1\r}
};expect eof"
done
for i in {
   3..5};do expect -c "
        set timeout 2
        spawn ssh-copy-id k8s-node0$i
        expect {
        "yes/no" {send yes\r;exp_continue}
        "password" {send 1\r}
};expect eof"
done


# 添加执行权限并运行脚本

chmod +x login.sh

bash login.sh

在这里插入图片描述

4.加载内核模块以及配置iptables流量转发策略
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf 
overlay 
br_netfilter 
EOF


# 加载内核

sudo modprobe overlay
sudo modprobe br_netfilter


cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF


# 使配置生效 

sysctl --system
5.检查是否加载成功
sysctl --system

lsmod | grep br_netfilter
lsmod | grep overlay

在这里插入图片描述

6.时间同步
# 编辑配置文件,注释第三行,添加第四行

vim /etc/chrony.conf

 3 #pool 2.rocky.pool.ntp.org iburst
 4 server ntp1.aliyun.com iburst


# 保存,重启

systemctl restart chronyd.service


# 查看是否同步成功

timedatectl

在这里插入图片描述

7.安装containerd和runc

在github官网找到对应版本的cri-containerd-cni下载
在这里插入图片描述

在这里插入图片描述

# 下载技巧,在国外网址前加上镜像加速地址,下载
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kisy夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值