如图所示,kuernetes组件组件主要可分为APISERVICE、replication CrontrollerManger、Scheduler、ETCD、Kubelet、Kube_proxy等。部署高可用,实际就是这些组件的高可用。
由于ETCD使用raft算法,所以当部署多个master节点时,会自动组成高可用;CrontrollerManger与Scheduler在设计时也自动组成了高可用。所以搭建kubernetes的高可用就是搭建apiserver的高可用。
- 必须同步所有服务器时间
- 所有服务器主机名不能重复
- 系统支持:centos7.6以上(其中centos8不支持) ubuntu16.04以上
- 内核推荐4.14以上, 系统推荐:centos7.7
| 角色 | ip | 系统 |
|---|---|---|
| master01 | 192.168.234.136 | CentOS Linux release 7.7.1908 (Core) |
| master02 | 192.168.234.137 | CentOS Linux release 7.7.1908 (Core) |
| master03 | 192.168.234.138 | CentOS Linux release 7.7.1908 (Core) |
| node01 | 192.168.234.139 | CentOS Linux release 7.7.1908 (Core) |
参考站内博客Linux系统内核升级
调整系统时区(如正确可忽略)#设置系统时区 $ timedatectl set-timezone Asia/Shanghai #将当前时间写入硬件时钟 $ timedatectl set-local-rtc 0 #重启服务 $ systemctl restart rsyslog.service $ systemctl restart crond.service设置主机名并配置hosts配置文件
$ hostnamectl set-hostname master01 $ hostnamectl set-hostname master02 $ hostnamectl set-hostname master03 $ hostnamectl set-hostname node01 $ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.234.136 master01 192.168.234.137 master01 192.168.234.136 master01 192.168.234.138 node01关闭防火墙、selinux、以及swap分区
$ systemctl stop firewalld && systemctl disable firewalld $ setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config $ swapoff -a && sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab调整内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 net.ipv4.ip_forward=1 net.ipv4.tcp_tw_recycle=0 vm.swappiness=0 vm.overcommit_memory=1 vm.panic_on_oom=0 fs.inotify.max_user_instances=8192 fs.inotify.max_user_watches=1048576 fs.file-max=52706963 fs.nr_open=52706963 net.ipv6.conf.all.disable_ipv6=1 net.netfilter.nf_conntrack_max=2310720 EOF $ sysctl -p /etc/sysctl.d/kubernetes.conf开启ipvs
$ modprobe br_netfilter #用于向内核中加载模块 $ cat > /etc/sysconfig/modules/ipvs.modules <以上步骤所有集群机器需要全部执行。
Sealos 部署高可用Sealos 相关操作只要放入其中一个节点即可,他会自动发送到其他节点
# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载 $ wget -c https://sealyun-home.oss-cn-beijing.aliyuncs.com/sealos/latest/sealos && chmod +x sealos && mv sealos /usr/bin # 下载离线资源包 wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/05a3db657821277f5f3b92d834bbaf98-v1.22.0/kube1.22.0.tar.gz #安装集群 $ sealos init --passwd '12344' --master 192.168.234.136 --master 192.168.234.137 --master 192.168.234.138 --node 192.168.234.139 --pkg-url /opt/kube1.20.0.tar.gz --version v1.22.0节点查看
#kube-scheduler 状态查看 $ kubectl get endpoints kube-scheduler -n kube-system -o yaml #kube-controller-manager 状态查看 $ kubectl get endpoints kube-controller-manager -n kube-system -o yamlSealos 相关命令 增加 Master 节点$ sealos join --master 192.168.0.6 --master 192.168.0.7 # 或者多个连续 IP $ sealos join --master 192.168.0.6-192.168.0.9增加 node$ sealos join --node 192.168.0.6 --node 192.168.0.7 # 或者多个连续 IP $ sealos join --node 192.168.0.6-192.168.0.9删除指定 Master 节点$ sealos clean --master 192.168.0.6 --master 192.168.0.7 # 或者多个连续 IP $ sealos clean --master 192.168.0.6-192.168.0.9删除指定 node 节点$ sealos clean --node 192.168.0.6 --node 192.168.0.7 # 或者多个连续 IP $ sealos clean --node 192.168.0.6-192.168.0.9清理集群$ sealos clean --all备份集群$ sealos etcd save



