kubernetes高可用集群

本文详细介绍了如何部署一个Kubernetes高可用集群,包括关闭SELinux和防火墙,关闭swap,修改内核参数,安装kubeadm和docker,配置负载均衡以及使用haproxy。集群测试显示,即使关闭某个master节点,pod也能在其他节点上正常运行,证明了K8s高可用和负载均衡的部署成功。
摘要由CSDN通过智能技术生成

一 Kubernetes的高可用

Kubernetes的高可用主要指的是控制平面的高可用,简单说,就是有多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。HA有两种做法,一种是将etcd与Master节点组件混布在一起:
在这里插入图片描述
另外一种方式是,使用独立的Etcd集群,不与Master节点混布
在这里插入图片描述

两种方式的相同之处在于都提供了控制平面的冗余,实现了集群高可以用,区别在于: Etcd混布方式:

所需机器资源少 部署简单,利于管理 容易进行横向扩展
风险大,一台宿主机挂了,master和etcd就都少了一套,集群冗余度受到的影响比较大。 Etcd独立部署方式:

所需机器资源多(按照Etcd集群的奇数原则,这种拓扑的集群关控制平面最少就要6台宿主机了)。
部署相对复杂,要独立管理etcd集群和和master集群。
解耦了控制平面和Etcd,集群风险小健壮性强,单独挂了一台master或etcd对集群的影响很小。

二 部署环境

下面的部署测试,只会以混布的方式部署一个2haproxy,2master,2*node,共5台机器的集群,实际上由于etcd选举要过半数,至少要3台master节点才能构成高可用,在生产环境,还是要根据实际情况,尽量选择风险低的拓扑结构。

三 部署步骤

1 在所有节点上操作

1.1 关闭selinux,firewall
setenforce  0
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config 
systemctl stop firewalld
systemctl disable firewalld
1.2 关闭swap,(1.8版本后的要求,目的应该是不想让swap干扰pod可使用的内存limit)
swapoff -a
1.3 修改下面内核参数,否则请求数据经过iptables的路由可能有问题
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

2 安装kubeadm、docker

2.1 编辑仓库文件并传给其他主机
[dvd]
name=dvd
baseurl=http://172.25.9.254/rhel7.6
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.9.254/rhel7.6/addons/HighAvailability
gpgcheck=0

----------------------------------------------
cat docker.repo 
[docker]
name=docker-ce
baseurl=http://172.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值