共计 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 相关操作只要放入其中一个节点即可,他会自动发送到其他节点
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 |
节点查看
kubectl get endpoints kube-scheduler -n kube-system -o yaml | |
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
提醒:本文发布于1014天前,文中所关联的信息可能已发生改变,请知悉!