类型
状态
日期
链接
摘要
标签
分类
图标
密码
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 时间同步
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
的状态页面

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

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中有对应的镜像

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状态

- 作者:Cloud1024
- 链接:https://itq5.com/posts/linux_docker_k8s_install
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。