sealos三分钟一键部署k8s高可用集群

使用sealos一键部署k8s高可用集群

sealos官网地址:

  • https://sealyun.com/
  • 备注
    • 企业级应用的集群离线包需要付费,学习测试,可以使用作者提供的免费离线包【离线包已经收藏在百度云盘】
    • wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/2fb10b1396f8c6674355fcc14a8cda7c-v1.20.0/kube1.20.0.tar.gz

sealos常用参数说明

--master Master 节点服务器地址列表 
--node Node 节点服务器地址列表 
--user 服务器 SSH 用户名 
--passwd 服务器 SSH 用户密码 
--pkg-url 离线包所在位置,可以是本地目录,也可以是一个 HTTP 地址 
--version 指定需要部署的 Kubernetes 版本 
--pk 指定 SSH 私钥所在位置,默认为 /root/.ssh/id_rsa 


Other flags: 

  --kubeadm-config string kubeadm-config.yaml 用于指定自定义 kubeadm 配置文件 
  --vip string virtual ip (default "10.103.97.2") 本地负载时虚拟 IP ,不推荐修改,集群外不可访问

安装注意事项

高版本离线包自带docker,如没安装docker会自动安装。所以说需要纯净的系统
下载kubernetes 离线安装包.
尽量使用新版本sealos 用新不用旧
务必同步服务器时间
主机名不可重复
master节点CPU必须2C以上
cni组件选择cilium时要求内核版本不低于5.4
podSubnet: 100.64.0.0/10
serviceSubnet: 10.96.0.0/12

服务器列表

master01  172.31.108.31
master02  172.31.108.32
master03  172.31.108.33
node01  172.31.108.34

部署

防火墙设置
systemctl stop firewalld
systemctl disable firewalld
yum -y install iptables-services ipvsadm 
systemctl start iptables 
systemctl  enable iptables 
iptables -F 
service iptables save
主机名设置
$ hostnamectl set-hostname 主机名
$ cat > /etc/hosts <<-'EOF'
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.5.151 k8s-master1
192.168.5.152 k8s-master2
192.168.5.153 k8s-master3
192.168.5.154 k8s-node1
192.168.5.155 k8s-node2
EOF
时间同步
  • 设置系统时区并同步时间服务器
yum install -y ntpdate
ntpdate time.windows.com
内核参数调整
cat > 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
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
EOF

$ sysctl -p /etc/sysctl.d/kubernetes.conf
关闭swap分区
  • 关闭 swap 分区
swapoff -a 																															
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
设置rsyslog和systemd journald
$ mkdir /var/log/journal # 持久化保存日志的目录
$ mkdir /etc/systemd/journald.conf.d
$ cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]

Storage=persistent		# 持久化保存到磁盘
Compress=yes			# 压缩历史日志

SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000

SystemMaxUse=10G		# 最大占用空间 10G

SystemMaxFileSize=200M	# 单日志文件最大 200M

MaxRetentionSec=2week	# 日志保存时间 2 周

ForwardToSyslog=no		# 不将日志转发到 syslog
EOF

$ systemctl restart systemd-journald
升级内核版本【】
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
$ yum --enablerepo=elrepo-kernel install -y kernel-lt
$ grep initrd16 /boot/grub2/grub.cfg
$ grub2-set-default 0
$ reboot
kube-proxy开启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 && lsmod | grep -e ip_vs -e nf_conntrack
安装sealos
$ wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos 
$ chmod +x sealos 
$ cp sealos  /usr/sbin/sealos

使用sealos部署k8s
$ sealos init --passwd '5LmUmTTu' \
    --master 172.31.108.31 --master 172.31.108.32 --master 172.31.108.33 \
    --node 172.31.108.34 \
    --pkg-url /root/kube1.14.10.tar.gz \
    --version v1.14.10
sealos参数解析
--master 192.168.0.4:22       # master地址列表,若端口是22可以省略不写
--node 192.168.0.5            # node地址列表
--user root                   # 服务用户名
--passwd your-server-password # 服务器密码,用于远程执行命令
--pkg kube1.14.10.tar.gz      # 离线安装包名称
--version v1.14.10            # kubernetes 离线安装包版本,这渲染kubeadm配置时需要使用
-–pk-passwd '123...qA'         # 使用密钥对远程服务器,密钥对的密码 
kuboard部署
$ kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

$ watch kubectl get pods -n kuboard
# 执行指令 watch kubectl get pods -n kuboard,等待 kuboard 名称空间中所有的 Pod 就绪,如下所示,
# 如果结果中没有出现 kuboard-etcd-xxxxx 的容器,请查看  中关于 缺少 Master Role 的描述。

$ kubectl get pods -n kuboard

其他信息

新增节点
# 新增master节点
$ sealos join --master 192.168.198.127 --master 192.168.198.128 		# 新增不连续IP 
$ sealos join --master 192.168.198.127-192.168.198.128					# 新增多个连续IP 
# 删除master节点
$ sealos clean --master 192.168.198.122 --master 192.168.198.123 		# 删除不连续IP 
$ sealos clean --master 192.168.198.122-192.168.198.123					# 删除多个连续IP

# 新增node节点
$ sealos join --node 192.168.198.127 --node 192.168.198.128 			# 新增不连续IP
$ sealos join --node 192.168.198.127-192.168.198.128					# 新增多个连续IP
# 删除node节点
$ sealos clean --node 192.168.198.125 --node 192.168.198.126 			# 删除不连续IP
$ sealos clean --node 192.168.198.125-192.168.198.126					# 删除多个连续IP

# 清理集群
$ sealos clean --all -f
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值