跨境互联网 跨境互联网
首页
  • AI 工具

    • 绘图提示词工具 (opens new window)
    • ChatGPT 指令 (opens new window)
  • ChatGPT

    • ChatGP T介绍
    • ChatGPT API 中文开发手册
    • ChatGPT 中文调教指南
    • ChatGPT 开源项目
  • Midjourney

    • Midjourney 文档
  • Stable Diffusion

    • Stable Diffusion 文档
  • 其他

    • AIGC 热门文章
    • 账号合租 (opens new window)
    • 有趣的网站
  • Vue

    • Vue3前置
  • JAVA基础

    • Stream
    • Git
    • Maven
    • 常用第三方类库
    • 性能调优工具
    • UML系统建模
    • 领域驱动设计
    • 敏捷开发
    • Java 测试
    • 代码规范及工具
    • Groovy 编程
  • 并发编程&多线程

    • 并发编程
    • 高性能队列 Disruptor
    • 多线程并发在电商系统下的应用
  • 其他

    • 面试题
  • 消息中间中间件

    • Kafka
    • RabbitMQ
    • RocketMQ
  • 任务调度

    • Quartz
    • XXL-Job
    • Elastic-Job
  • 源码解析

    • Mybatis 高级使用
    • Mybatis 源码剖析
    • Mybatis-Plus
    • Spring Data JPA
    • Spring 高级使用
    • Spring 源码剖析
    • SpringBoot 高级使用
    • SpringBoot 源码剖析
    • Jdk 解析
    • Tomcat 架构设计&源码剖析
    • Tomcat Web应用服务器
    • Zookeeper 高级
    • Netty
  • 微服务框架

    • 分布式原理
    • 分布式集群架构场景化解决方案
    • Dubbo 高级使用
    • Dubbo 核心源码剖析
    • Spring Cloud Gateway
    • Nacos 实战应用
    • Sentinel 实战应用
    • Seata 分布式事务
  • 数据结构和算法的深入应用
  • 存储

    • 图和Neo4j
    • MongoDB
    • TiDB
    • MySQL 优化
    • MySQL 平滑扩容实战
    • MySQL 海量数据存储与优化
    • Elasticsearch
  • 缓存

    • Redis
    • Aerospike
    • Guava Cache
    • Tair
  • 文件存储

    • 阿里云 OSS 云存储
    • FastDF 文件存储
  • 基础

    • Linux 使用
    • Nginx 使用与配置
    • OpenResty 使用
    • LVS+Keepalived 高可用部署
    • Jekins
  • 容器技术

    • Docker
    • K8S
    • K8S
  • 01.全链路(APM)
  • 02.电商终极搜索解决方案
  • 03.电商亿级数据库设计
  • 04.大屏实时计算
  • 05.分库分表的深入实战
  • 06.多维系统下单点登录
  • 07.多服务之间分布式事务
  • 08.业务幂等性技术架构体系
  • 09.高并发下的12306优化
  • 10.每秒100W请求的秒杀架构体系
  • 11.集中化日志管理平台的应用
  • 12.数据中台配置中心
  • 13.每天千万级订单的生成背后痛点及技术突破
  • 14.红包雨的架构设计及源码实现
  • 人工智能

    • Python 笔记
    • Python 工具库
    • 人工智能(AI) 笔记
    • 人工智能(AI) 项目笔记
  • 大数据

    • Flink流处理框架
  • 加密区

    • 机器学习(ML) (opens new window)
    • 深度学习(DL) (opens new window)
    • 自然语言处理(NLP) (opens new window)
AI 导航 (opens new window)

Revin

首页
  • AI 工具

    • 绘图提示词工具 (opens new window)
    • ChatGPT 指令 (opens new window)
  • ChatGPT

    • ChatGP T介绍
    • ChatGPT API 中文开发手册
    • ChatGPT 中文调教指南
    • ChatGPT 开源项目
  • Midjourney

    • Midjourney 文档
  • Stable Diffusion

    • Stable Diffusion 文档
  • 其他

    • AIGC 热门文章
    • 账号合租 (opens new window)
    • 有趣的网站
  • Vue

    • Vue3前置
  • JAVA基础

    • Stream
    • Git
    • Maven
    • 常用第三方类库
    • 性能调优工具
    • UML系统建模
    • 领域驱动设计
    • 敏捷开发
    • Java 测试
    • 代码规范及工具
    • Groovy 编程
  • 并发编程&多线程

    • 并发编程
    • 高性能队列 Disruptor
    • 多线程并发在电商系统下的应用
  • 其他

    • 面试题
  • 消息中间中间件

    • Kafka
    • RabbitMQ
    • RocketMQ
  • 任务调度

    • Quartz
    • XXL-Job
    • Elastic-Job
  • 源码解析

    • Mybatis 高级使用
    • Mybatis 源码剖析
    • Mybatis-Plus
    • Spring Data JPA
    • Spring 高级使用
    • Spring 源码剖析
    • SpringBoot 高级使用
    • SpringBoot 源码剖析
    • Jdk 解析
    • Tomcat 架构设计&源码剖析
    • Tomcat Web应用服务器
    • Zookeeper 高级
    • Netty
  • 微服务框架

    • 分布式原理
    • 分布式集群架构场景化解决方案
    • Dubbo 高级使用
    • Dubbo 核心源码剖析
    • Spring Cloud Gateway
    • Nacos 实战应用
    • Sentinel 实战应用
    • Seata 分布式事务
  • 数据结构和算法的深入应用
  • 存储

    • 图和Neo4j
    • MongoDB
    • TiDB
    • MySQL 优化
    • MySQL 平滑扩容实战
    • MySQL 海量数据存储与优化
    • Elasticsearch
  • 缓存

    • Redis
    • Aerospike
    • Guava Cache
    • Tair
  • 文件存储

    • 阿里云 OSS 云存储
    • FastDF 文件存储
  • 基础

    • Linux 使用
    • Nginx 使用与配置
    • OpenResty 使用
    • LVS+Keepalived 高可用部署
    • Jekins
  • 容器技术

    • Docker
    • K8S
    • K8S
  • 01.全链路(APM)
  • 02.电商终极搜索解决方案
  • 03.电商亿级数据库设计
  • 04.大屏实时计算
  • 05.分库分表的深入实战
  • 06.多维系统下单点登录
  • 07.多服务之间分布式事务
  • 08.业务幂等性技术架构体系
  • 09.高并发下的12306优化
  • 10.每秒100W请求的秒杀架构体系
  • 11.集中化日志管理平台的应用
  • 12.数据中台配置中心
  • 13.每天千万级订单的生成背后痛点及技术突破
  • 14.红包雨的架构设计及源码实现
  • 人工智能

    • Python 笔记
    • Python 工具库
    • 人工智能(AI) 笔记
    • 人工智能(AI) 项目笔记
  • 大数据

    • Flink流处理框架
  • 加密区

    • 机器学习(ML) (opens new window)
    • 深度学习(DL) (opens new window)
    • 自然语言处理(NLP) (opens new window)
AI 导航 (opens new window)
  • Docker

  • k8s

  • k8s

    • k8s快速入门之资源文件
    • 快速入门一
    • 快速入门二
    • 资源清单-pod进阶
    • 资源控制器
    • service高级
    • k8s存储卷
    • k8s高可用-kubesray
    • k8s高可用-sealos
      • 1 Sealos
      • 2 部署准备
        • 2.1 sealos官网
        • 2.2 安装文档
        • 2.3 sealos下载
        • 2.4 K8S离线包
        • 2.5 Sealos 常用参数说明
      • 3 部署多主节点的高可用集群
        • 3.1 节点信息
        • 3.2 安装相关环境依赖
        • 3.3 初始化安装
        • 3.3.1 多master
        • 3.3.2 kubectl命令自动补全
        • 3.4 master节点操作
        • 3.4.1 增加master
        • 3.4.2 删除指定master节点
        • 3.5 node节点操作
        • 3.5.1 增加node
        • 3.5.2 删除指定node节点
        • 3.5.3 清理集群
    • k8s运维常用软件安装
  • Docker容器
  • k8s
Revin
2023-08-03
目录

k8s高可用-sealos

# 1 Sealos

Sealos 是一个 Go 语言开发的简单干净且轻量的 Kubernetes 集群部署工具, Sealos 能很好的支持在生产环境中部署高可用的 Kubernetes 集群。

Sealos 特性与优势

  1. 支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。
  2. 证书有效期默认延期至 99 年。
  3. 工具使用非常简单。
  4. 支持使用自定义配置文件,可灵活完成集群环境定制。
  5. 使用内核进行本地负载,稳定性极高,故障排查也极其简单。
  6. 最主要的优势是不需要翻墙出去!!!

为什么不用KeepAlived和HAProxy实现集群高可用

无论是通过 KeepAlived 还是 HAProxy 进行高可用集群调度都会存在以下一些劣势。

  1. 软件源不一致可能导致容器中安装的软件版本也不一致,进而会引起相应检查脚本不生效等故障。

  2. 可能因为系统依赖库问题,在某些特定环境下就直接无法完成安装。

  3. 只依靠检测 HAProxy 进程是否存活是无法保证集群高可用的,正确的检测方式应该是判断ApiServer 是否 healthz 状态。

  4. Keepalived 可能存在 Cpu 占满的情况。

本地负载为什么不使用Envoy或者Nginx实现

Sealos 高可用实现是通过本地负载方式完成的。本地负载实现方式有多种,比如: IPVS 、 Envoy 、Nginx 等,而 Sealos 采用的是通过内核 IPVS 来实现的。

本地负载:在每个 Node 节点上都启动一个负载均衡,同时监听集群中的多个 Master 节点。

Sealos 选择通过内核 IPVS 来实现主要有以下几个原因:

  • 如果使用 Envoy 等需要在每个节点上都跑一个进程,消耗更多资源。虽然 IPVS 实际上也会多跑一个 lvscare 进程 ,但是 lvscare 只是负责管理 IPVS 规则,原理和 Kube-Proxy 类似。真正的流量直接从内核层面走,不需要把数据包先走到用户态中去处理。

  • 使用 Envoy 存在启动优先级的问题,比如:Join 集群时,如果负载均衡没有建立,Kubelet 就会启动失败。使用 IPVS 则不会存在这样的问题,因为我们可以在 Join 集群前先建立好转发规则。

为什么要定制Kubeadm

  • 解决默认证书有效期只有一年的问题。

  • 更方便的实现本地负载。

  • 核心的功能均集成到 Kubeadm 中了,Sealos 只管分发和执行上层命令,相对就更轻量了。

Sealos执行流程

  1. 通过 SFTP 或者 Wget 命令把离线安装包拷贝到目标机器上,包括所有 Master 和 Node 节点。
  2. 在 Master 0 节点上执行 kubeadm init 命令。
  3. 在其它 Master 节点上执行 kubeadm join 命令并设置控制面。这个过程中多个 Master 节点上

的 Etcd 会自动组成一个 Etcd 集群,并启动相应控制组件。

  1. 所有 Node 节点都加入到集群中,这个过程中会在 Node 节点上进行 IPVS 转发规则和/etc/hosts 配置。

Node 节点对 ApiServer 的访问均是通过域名进行的。因为 Node 节点需要通过 虚拟 IP 连接到多个 Master 上,但是每个 Node 节点的 Kubelet 与 Kube-Proxy 访问 ApiServer 的地址是不同的,所以这里使用域名来解析每个节点上 ApiServer 不同的 IP 地址。

# 2 部署准备

# 2.1 sealos官网

官网地址: https://sealyun.com/

企业级应用的集群离线包需要付费,我们只是学习,使用作者提供的免费离线包: http://store.lameleg.com/

# 2.2 安装文档

官网中文安装手册:

https://github.com/fanux/sealos

# 2.3 sealos下载

可以下载sealos不同版本的二进制文件

https://github.com/fanux/sealos/releases

# 2.4 K8S离线包

离线包包含所有二进制文件配置文件和镜像

非免费V1.16.0版本下载地址 https://sealyun.oss-cn-beijing.aliyuncs.com/cf6bece970f6dab3d8dc8bc5b588cc18-1.16.0/kube1.16.0.tar.gz

免费V1.17.0版本下载地址 https://sealyun.oss-cn-beijing.aliyuncs.com/413bd3624b2fb9e466601594b4f72072-1.17.0/kube1.17.0.tar.gz

非免费V1.18.0版本下载地址: https://sealyun.oss-cn-beijing.aliyuncs.com/7b6af025d4884fdd5cd51a674994359c-1.18.0/kube1.18.0.tar.gz

免费V1.18.1版本下载地址: https://sealyun.oss-cn-beijing.aliyuncs.com/7b6af025d4884fdd5cd51a674994359c-1.18.0/kube1.18.0.tar.gz

非免费V1.18.2版本下载地址: https://sealyun.oss-cn-beijing.aliyuncs.com/9a8299ea8016abe32e1564a44d5162e4-1.18.2/kube1.18.2.tar.gz

# 2.5 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 ,不推荐修改,集群外不可访问
1
2
3
4
5
6
7
8
9
10
11
12

# 3 部署多主节点的高可用集群

# 3.1 节点信息

服务器用户名:root,服务器密码:123456

主机名 IP地址
sealos-master01 192.168.198.121
sealos-master02 192.168.198.122
sealos-master03 192.168.198.123
sealos-node01 192.168.198.124
sealos-node02 192.168.198.125
sealos-node03 192.168.198.126

# 3.2 安装相关环境依赖

通过 Sealos 进行 Kubernetes 集群部署,你需要先准备好以下环境。

1.在所有要部署的机器上,先完成 Docker 的安装和启动。 2.下载 Kubernetes 离线安装包。 3.下载最新版本 Sealos。 4.对所有服务器进行时间同步。 5.系统支持:centos7.2以上,ubuntu16.04以上。内核推荐4.14以上。推荐配置:centos7.8 6.主机名不可重复 7.master节点CPU必须2C以上 8.请使用sealos 3.2.0以上版本

升级系统内核

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
1
2
3
4
5
6

修改Cgroup Driver

修改/etc/docker/daemon.json,新增:

"exec-opts": ["native.cgroupdriver=systemd"]

重启docker服务:
systemctl daemon-reload
systemctl restart docker
查看修改后状态:
docker info | grep Cgroup
1
2
3
4
5
6
7
8
9

设置hostname

cat <<EOF >>/etc/hosts
192.168.198.121 sealos-master01
192.168.198.122 sealos-master02
192.168.198.123 sealos-master03
192.168.198.124 sealos-node01
192.168.198.125 sealos-node02
192.168.198.126 sealos-node03
EOF
1
2
3
4
5
6
7
8

# 3.3 初始化安装

# 3.3.1 多master

将sealos二进制文件上传sealos-master01:/data
将kubernates离线安装包上传sealos-master01:/data
cd /data

授权并移动到/usr/bin目录中
chmod +x sealos && mv sealos /usr/bin

多master HA:
sealos init \
--master 192.168.198.121 \
--master 192.168.198.122 \
--master 192.168.198.123 \
--node 192.168.198.124 \
--node 192.168.198.125 \
--node 192.168.198.126 \
--user root \
--passwd 123456 \
--version v1.17.0 \
--pkg-url /data/kube1.17.0.tar.gz

单master多node:
sealos init --master 192.168.198.121 \
--node 192.168.198.124 \
--node 192.168.198.125 \
--node 192.168.198.126 \
--user root \
--passwd 123456 \
--version v1.17.0 \
--pkg-url /data/kube1.17.0.tar.gz


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 3.3.2 kubectl命令自动补全

sealos默认已经帮我们安装命令补全功能。

echo "source <(kubectl completion bash)" >> ~/.bash_profile
source ~/.bash_profile
1
2

# 3.4 master节点操作

# 3.4.1 增加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
1
2
3
4

# 3.4.2 删除指定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
1
2
3
4

# 3.5 node节点操作

# 3.5.1 增加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
1
2
3
4

# 3.5.2 删除指定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
1
2
3
4

# 3.5.3 清理集群

sealos clean --all -f
1
上次更新: 2025/04/03, 11:07:08
k8s高可用-kubesray
k8s运维常用软件安装

← k8s高可用-kubesray k8s运维常用软件安装→

最近更新
01
tailwindcss
03-26
02
PaddleSpeech
02-18
03
whisper
02-18
更多文章>
Theme by Vdoing | Copyright © 2019-2025 跨境互联网 | 豫ICP备14016603号-5 | 豫公网安备41090002410995号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式