共计 2879 个字符,预计需要花费 8 分钟才能阅读完成。
kubernetes 之 sealos 搭建高可用集群
如图所示,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系统内核升级
设置时间同步
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
提醒:本文发布于836天前,文中所关联的信息可能已发生改变,请知悉!