使用kubeadm搭建高可用的K8s集群

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

这个工具能通过两条指令完成一个kubernetes集群的部署:

# 创建一个 Master 节点
$ kubeadm init

# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master节点的IP和端口 >

1. 安装要求

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

  • 一台或多台机器,操作系统 CentOS7.x-86_x64

  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多

  • 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点

  • 禁止swap分区

2. 准备环境

角色
IP

master1

192.168.44.155

master2

192.168.44.156

node1

192.168.44.157

VIP(虚拟ip)

192.168.44.158

3. 所有master节点部署keepalived haproxy

3.1 安装相关包和keepalived haproxy

3.2配置master节点 keepalived

master1节点配置

master2节点配置

3.3 配置master节点 haproxy

两台master节点的配置均相同,配置中声明了后端代理的两个master节点服务器,指定了haproxy运行的端口为16443等,因此16443端口为集群的入口

3.4 启动和检查

两台master都启动

4. 所有节点安装Docker/kubeadm/kubelet

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

4.1 安装Docker

6. 部署Kubernetes Master

6.1 创建kubeadm配置文件

在具有vip的master上操作,这里为master1

6.2 在master1节点执行

按照提示配置环境变量,使用kubectl工具:

按照提示保存以下内容,一会要使用:

查看集群状态

7.安装集群网络

从官方地址获取到flannel的yaml,在master1上执行

安装flannel网络

检查

8、master2节点加入集群

8.1 复制密钥及相关文件

从master1复制密钥及相关文件到master2

8.2 master2加入集群

执行在master1上init后输出的join命令,需要带上参数--control-plane表示把master控制节点加入集群

检查状态

5. 加入Kubernetes Node

在node1上执行

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

集群网络重新安装,因为添加了新的node节点

检查状态

7. 测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

访问地址:http://NodeIP:Port

Last updated