kubernetes 之 sealos 搭建高可用集群

kubernetes 之 sealos 搭建高可用集群

post-393-63074a9e4f28e

如图所示,kuernetes组件组件主要可分为APISERVICE、replication CrontrollerManger、Scheduler、ETCD、Kubelet、Kube_proxy等。部署高可用,实际就是这些组件的高可用。
由于ETCD使用raft算法,所以当部署多个master节点时,会自动组成高可用;CrontrollerManger与Scheduler在设计时也自动组成了高可用。所以搭建kubernetes的高可用就是搭建apiserver的高可用

post-393-63074a9e9e7e7

注意事项

  1. 必须同步所有服务器时间
  2. 所有服务器主机名不能重复
  3. 系统支持:centos7.6以上(其中centos8不支持) ubuntu16.04以上
  4. 内核推荐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系统内核升级

设置时间同步

yum -y install ntpdate && \
systemctl start ntpdate && systemctl enable ntpdate && \
ntpdate ntp.aliyun.com

设置主机名并配置hosts配置文件

192.168.234.136 master01
192.168.234.137 master02
192.168.234.138 master03
192.168.234.139 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<<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /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.22.0.tar.gz \
    --version v1.22.0 | tee /opt/sealosinit.log

节点查看

#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 yaml

Sealos 相关命令

增加 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
阅读剩余
THE END