基于Docker与Kubernetes1.30.0高可用环境部署-Kubeadm-Ubuntu
00 分钟
2024-7-5
2025-2-23
类型
状态
日期
链接
摘要
标签
分类
图标
密码

1 环境准备

这里示例的Kubernetes集群部署环境配置如下:
IP
主机名
用途
10.200.13.11
master1.ik8s.cn
k8s集群主节点1
10.200.13.9
master2.ik8s.cn
k8s集群主节点2
10.200.13.10
master3.ik8s.cn
k8s集群主节点3
10.200.13.16
node1.ik8s.cn
k8s集群工作节点1
10.200.13.6
node2.ik8s.cn
k8s集群工作节点2
10.200.13.43
ha1.ik8s.cn
nginx+keepalived,提供控制平面负载
10.200.13.45
ha2.ik8s.cn
nginx+keepalived,提供控制平面负载
10.200.13.27
harbor.ik8s.cn
容器镜像仓库
10.200.13.20
k8s.ik8s.cn
虚拟VIP,通过ha1和ha2节点实现
  • OS:Ubuntu 20.04 LTS
  • Kubernetes: V1.30.0
  • Container Runtime: Docker CE
  • CRI: cri-dockerd
网络环境:
  • 节点网络:10.200.13.0/24
  • Pod网络:10.244.0.0/16
  • Service网络:10.96.0.0/12

1.1 初始化

1.1.1 配置ssh免密(可选)

master1节点上配置免密,方便后续部署中进行快捷操作。
1、在master1节点编写脚本ssh_key_push.sh内容如下:
2、执行脚本

1.1.2 设置主机名及解析

master1上操作
1、编写hosts.txt对应的关系
2、编写set_hostname_host.sh脚本内容如下
3、执行脚本

1.1.3 禁用swap

主要针对kubernetes集群节点,ha节点可选
批量操作
master1上操作

1.1.4 时间同步

可以借助chronyd服务,来配置时间同步,安装命令如下,具体配置可以参考时间同步配置

1.1.5 关闭防火墙

禁用默认配置的iptables防火墙服务
master1上操作

1.1.6 内核参数调整

允许 iptables 检查桥接流量,若要显式加载此模块,需运行 sudo modprobe br_netfilter,通过运行 lsmod | grep br_netfilter 来验证 br_netfilter 模块是否已加载
为了让 Linux 节点的 iptables 能够正确查看桥接流量,需要确认 sysctl 配置中的 net.bridge.bridge-nfcall-iptables 设置为 1。
首先在master1上操作:
批量操作余下节点

2 配置APIServer的高可用

在ha节点上配置操作,通过HAProxy实现kubeapi服务的负载均衡。

2.1 安装HAProxy

下面的操作两台ha节点均需要操作
1、修改内核参数
2、安装haproxy
3、修改配置文件,添加如下配置
4、启动haproxy

2.2 安装Keepalived

1、安装软件
2、修改配置
(HA1节点)
(HA2节点)
3、两个节点编写监听脚本
4、启动keepalived
确保vip能正常绑定
浏览器访问vip的8888端口,验证是否可以访问到haproxy的状态页面
notion image

3 安装harbor

1、首先安装docker及docker-compose
2、下载及配置修改
配置修改如下,以及https根据实际情况修改。
3、安装
创建一个项目,用于存放kubernetes安装所需要的镜像
notion image

4 安装Docker

配置 cgroup 驱动程序,容器运行时和 kubelet 都具有名字为 "cgroup driver" 的属性,该属性对于在 Linux 机器上管理 CGroups 而言非常重要。
注意:需要确保容器运行时和 kubelet 所使用的是相同的 cgroup 驱动,否则 kubelet 进程会失败。
1、配置apt源
2、安装docker
3、配置cgroupdriver,以及harbor的域名。
4、启动docker,并检查cgroup

5 安装kubeadm等工具

安装kubeadm、kubectl、kubelet等工具,这里通过阿里云的源进行安装。
1、配置apt源
2、安装软件

6 安装cri-dockerd

Kubernetes自v1.24移除了对docker-shim的支持,而Docker Engine默认又不支持CRI规范,因而二者将无法直接完成整合。为此,Mirantis和Docker联合创建了cri-dockerd项目,用于为Docker Engine提 供一个能够支持到CRI规范的垫片,从而能够让Kubernetes基于CRI控制Docker 。
cri-dockerd项目提供了预制的二制格式的程序包,用户按需下载相应的系统和对应平台的版本即可完成安装,这里以Ubuntu 20.04 64bits系统环境,以及cri-dockerd目前最新的程序版本v0.2.5为例。
1、下载软件包
2、解压
3、配置service文件
4、配置socket
5、启动cri-docker
同步到其余节点

7 集群初始化

7.1 提取准备镜像(可选)

1、查看所需要的镜像
2、下载镜像
查看所下载的镜像
如果需要导出镜像,可使用如下命令
3、上传到harbor,由于这里环境用到了harbor,所以我这里将所有镜像上传到harbor中。
3.1、编写shell脚本如下:
3.2、执行脚本进行上传
上传完成后,确保harbor中有对应的镜像
notion image

7.2 初始化master1

1、进行初始化
如果需要重新初始化,可以通过如下命令进行重置
2、生成授权文件
3、实现kubectl命令补全(kubectl 命令功能丰富,默认不支持命令补会,可以用下面方式实现)

7.3 加入余下的master节点

将master2和master3节点加入到集群中,在master2和master3节点执行上面初始化master1的结果中给出的命令。
注意:需要额外添加--socket选项

7.4 加入所有worker节点

同样使用上面初始化生成的加入worker的命令。
注意:需要额外添加--socket选项

7.5 部署网络插件

这里用flannel示例
1、下载yaml文件
2、准备镜像,将镜像上传到harbor中
3、修改flannel的资源清单定义文件,修改镜像地址为harbor的地址
4、安装

7.6 检查集群状态

1、查看各节点,及各pod是否正常运行。
2、同时通过haproxy的状态页面也可以看到apiserver状态
notion image
上一篇
Linux宝塔面板9.2.0开心版 – 宝塔开心版脚本
下一篇
搭建一个IPV6代理地址池

评论
Loading...