背景
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