使用sealos快速部署k8s集群

环境信息

主机名 IP地址
master1 192.168.0.1
node1 192.168.0.2
node2 192.168.0.3

服务器密码:123456

主机名解析

# 主机名成解析 编辑三台服务器的/etc/hosts文件,添加下面内容
192.168.0.1 master1
192.168.0.2 node1
192.168.0.3 node2

时间同步

kubernetes要求集群中的节点时间必须精确一直,这里使用chronyd服务从网络同步时间

yum install chrony -y
# 启动chronyd服务
systemctl start chronyd
systemctl enable chronyd
chronyc sources
date

禁用iptable和firewalld服务

kubernetes和docker 在运行的中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

# 1 关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
# 2 关闭iptables服务
systemctl stop iptables
systemctl disable iptables

禁用selinux

selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disable
# 注意修改完毕之后需要重启linux服务
SELINUX=disabled

禁用swap分区

swap分区指的是虚拟内存分区,它的作用是物理内存使用完,之后将磁盘空间虚拟成内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备,但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明

# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务
vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap
# /dev/mapper/centos-swap swap

修改hostname

# 到对应机器上执行
hostnamectl set-hostname master1
hostnamectl set-hostname node1
hostnamectl set-hostname node2

安装sealos和k8s集群

只需要在master服务器上执行下面命令即可

# 下载并安装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

# 安装一个三master的kubernetes集群
sealos init --passwd '123456' \
	--master 192.168.0.1  \
	--node 192.168.0.2  --node 192.168.0.3\
	--pkg-url /root/kube1.22.0.tar.gz \
	--version v1.22.0

增加master

sealos join --master 192.168.0.6 --master 192.168.0.7
sealos join --master 192.168.0.6-192.168.0.9  # 或者多个连续IP

增加node

sealos join --node 192.168.0.6 --node 192.168.0.7
sealos join --node 192.168.0.6-192.168.0.9  # 或者多个连续IP

删除指定master节点

sealos clean --master 192.168.0.6 --master 192.168.0.7
sealos clean --master 192.168.0.6-192.168.0.9  # 或者多个连续IP

删除指定node节点

sealos clean --node 192.168.0.6 --node 192.168.0.7
sealos clean --node 192.168.0.6-192.168.0.9  # 或者多个连续IP

清理集群

sealos clean --all

备份集群

sealos etcd save

注意事项

  • 必须同步所有服务器时间
  • 所有服务器主机名不能重复
  • 系统支持:centos7.6以上(其中centos8不支持) ubuntu16.04以上
  • 内核推荐4.14以上, 系统推荐:centos7.7