【k8s实战】kubeasz离线部署多master高可用集群

背景

kubeasz是一个利用ansible-playbook基于二进制方式自动化部署和运维k8s集群的开源项目,目前该项目最新发布版本为3.3.0,基于该版本我们可以快速实现部署最高版本为1.24.1的k8s集群。

安装规划

K8s HA-architecture

基于kubeasz安装的k8s高可用架构方案如上,目前kubeasz的官方文档中Node节点还使用的是haproxy处理自身高可用,但实际上kubeasz-3.3.0目前是使用kube-lb代替了haproxy,这部分内容官方还没有来得及更新,使用上留意下就可以了。

使用kubeasz默认安装的kubernetes集群主要特性如下

•etcd集群独立于kubernetes集群

•kubernetes三大组件均二进制运行

•各节点服务器都经过基本的性能基线设置,能满足常规的使用场景

•使用证书有效期为100年

•集群通过kube-lb组件实现内部高可用

•集成安装了kubernetes-dashboard,开箱即用

高可用集群所需节点配置如下

角色

服务器

描述

部署节点

10.0.1.121

作为宿主机通过kubeasz容器运行ansible/ezctl命令

etcd节点

10.0.1.122

10.0.1.123

10.0.1.124

注意etcd集群需要1,3,5,...奇数个节点,本实战安装3个节点

master节点

10.0.1.122

10.0.1.123

10.0.1.124

高可用集群至少2个master节点,本实战安装3个节点

node节点

10.0.1.125

10.0.1.126

10.0.1.127

运行应用负载的节点,节点数任意,本实战安装3个节点

以上服务器均是在一台普通台式机开的虚拟机,配置均是1c4g40g,最小化安装centos7.9。本次部署将以10.0.1.121作为宿主机通过kubeasz容器在线安装k8s集群,其中kubeasz使用即时的最新版本3.3.0。部署的k8s集群版本信息如下:

•k8s: v1.24.1

•etcd: v3.5.4

•containerd: 1.6.4

•flanal: v0.15.1

•dashboard: v2.5.1

安装部署

以下所有操作在部署节点10.0.1.121完成。

准备环境

准备脚本、二进制文件和镜像文件

# 下载工具脚本ezdown,使用kubeasz版本3.3.0
export release=3.3.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
# 使用工具脚本下载
./ezdown -D

./ezdown -D命令多执行几遍,直至再执行的时候不再downloading为止。这样就在/etc/kubeasz目录下下载了在线安装所有需要的脚本、二进制文件和镜像文件。

另外,通过执行./ezdown -D我们会发现docker环境也在主控宿主机安装好了,这个效果即使在做非k8集群本地化交付场景的时候也特别有用。

[root@server121 ~]# docker version
Client:
 Version:           20.10.16
 API version:       1.41
 Go version:        go1.17.10
 Git commit:        aa7e414
 Built:             Thu May 12 09:14:28 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true


Server: Docker Engine - Community
 Engine:
  Version:          20.10.16
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.10
  Git commit:       f756502
  Built:            Thu May 12 09:19:16 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.6.4
  GitCommit:        212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
 runc:
  Version:          1.1.1
  GitCommit:        v1.1.1-0-g52de29d7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

如果目标服务器可以直接连外网,那么通过./ezdown -D下载的文件足够用了,但是如果目标服务器不能连外网,那么我们还需要通过另外一个命令./ezdown -P把离线文件也下载下来,这些文件也都在/etc/kubeasz。后面我们把/etc/kubeasz这个目录打个压缩包,并和ezdown文件归档在一起后续可以直接使用。

设置ssh免密登陆部署服务器

# 主控机设置密钥
ssh-keygen


# 设置免密登陆
ssh-copy-id 10.0.1.122
ssh-copy-id 10.0.1.123
ssh-copy-id 10.0.1.124
ssh-copy-id 10.0.1.125
ssh-copy-id 10.0.1.126
ssh-copy-id 10.0.1.127

启动kubeasz容器

./ezdown -S
2022-07-01 19:56:27 INFO Action begin: start_kubeasz_docker
2022-07-01 19:56:27 INFO try to run kubeasz in a container
2022-07-01 19:56:27 DEBUG get host IP: 10.0.1.1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值