近期,KubeSphere 社区的讨论中频繁出现关于 Docker 官方镜像仓库访问受限的问题。
本文旨在为您提供一个详细的指南, 展示在 Docker 官方镜像访问受限的情况下,如何通过 KubeKey v3.1.2 一次性成功部署 KubeSphere v3.4.1 以及 Kubernetes v1.28.8 集群。这将帮助您克服访问限制,确保部署过程的顺利进行。
实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)
主机名 | IP | CPU | 内存 | 系统盘 | 数据盘 | 用途 |
ksp-control-1 | 192.168.9.91 | 8 | 16 | 40 | 100 | KubeSphere/k8s-control-plane/Worker |
ksp-control-2 | 192.168.9.92 | 8 | 16 | 40 | 100 | KubeSphere/k8s-control-plane/Worker |
ksp-control-3 | 192.168.9.93 | 8 | 16 | 40 | 100 | KubeSphere/k8s-control-plane/Worker |
合计 | 3 | 24 | 48 | 120 | 300 |
实战环境涉及软件版本信息
- 操作系统:openEuler 22.03 LTS SP3 x86_64
- KubeSphere:v3.4.1
- Kubernetes:v1.28.8
- KubeKey: v3.1.2
1. 前置条件
请参考 Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南,完成操作系统初始化配置。
初始化指南中没有涉及操作系统升级的任务,在能联网的环境建议初始化的时候升级操作系统,然后重启节点。
2. 安装部署 KubeSphere 和 Kubernetes
2.1 下载 KubeKey
本文将 Control-1 节点作为部署节点,把 KubeKey 最新版 (v3.1.2) 二进制文件下载到该服务器。
- 下载最新版的 KubeKey
- 查看 KubeKey 支持的 Kubernetes 版本列表
./kk version --show-supported-k8s
说明: 输出结果为 KubeKey 支持的结果,但不代表 KubeSphere 和其他 K8s 也能完美支持。
KubeKey 支持的 K8s 版本还是比较新的。本文选择 v1.28.8,生产环境可以选择 v1.26.15 或是其他次要版本是双数且补丁版本数超过 5 的版本。不建议选择太老的版本了,毕竟 v1.30 都已经发布了。
2.2 创建集群部署配置文件
本文部署一套三节点,control-plane 和 worker 复用的 Kubernetes 集群。同时,部署只启用默认插件的 KubeSphere 管理平台。
- 创建集群配置文件
本文选择了 KubeSphere v3.4.1 和 Kubernetes v1.28.8。因此,指定配置文件名称为 ksp-v341-v1288.yaml,如果不指定,默认的文件名为 config-sample.yaml。
- 修改配置文件
重点说明:解决 DockerHub 镜像拉取受限的核心办法就是修改 registry 的相关配置,显示的指定镜像从国内镜像仓库拉取。
编辑配置文件, vi ksp-v341-v1288.yaml
,主要修改 kind: Cluster 小节的相关配置,修改说明如下。
- hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口。示例演示了 ssh 端口号的配置方法。
- roleGroups:指定 etcd、control-plane 、worker 使用相同的三个节点
- internalLoadbalancer: 启用内置的 HAProxy 负载均衡器
- domain:自定义域名 lb.opsxlab.cn,无特殊需求可使用默认值 lb.kubesphere.local
- clusterName:自定义 opsxlab.cn,无特殊需求可使用默认值 cluster.local
- autoRenewCerts:该参数可以实现证书到期自动续期,默认为 true
- containerManager:使用 containerd
- storage.openebs.basePath:新增配置,指定 openebs 默认存储路径为 /data/openebs/local
- registry.privateRegistry:核心配置, 解决 Docker 官方镜像不可用的问题
- registry.namespaceOverride: 核心配置, 解决 Docker 官方镜像不可用的问题
修改后的完整示例如下:
2.3 部署集群
执行下面的命令,使用配置文件 ksp-v341-v1288.yaml
部署集群。
上面的命令执行后,KubeKey 先检查部署 Kubernetes 的依赖及其它配置是否符合要求。通过检查后,系统将提示您确认安装。输入 yes 并按 ENTER 继续部署。
部署完成需要大约 20-30 分钟左右,具体看网速和机器配置(注:kubeadm、kubelet 等 10个二进制安装包,总大小 400M,因下载限速 1024K,下载时间需要 7分钟)。
部署完成后,您应该会在终端上看到类似于下面的输出。提示部署完成的同时,输出中还会显示用户登陆 KubeSphere 的默认管理员用户和密码。
3. 验证 k8s 集群
3.1 KubeSphere 管理控制台验证集群状态
我们打开浏览器访问 Control-1 节点的 IP 地址和端口 30880,可以看到 KubeSphere 管理控制台的登录页面。
输入默认用户 admin 和默认密码 P@88w0rd,然后点击「登录」。
- 查看集群节点信息(CPU、内存资源使用量不大)
- 查看组件信息(最小化)
- 查看监控信息
3.2 kubectl 命令行验证集群状态
本小节只是简单查看基本状态,并不全面,更多的细节请自己体验探索。
- 查看集群节点信息
在 control-1 节点运行 kubectl 命令获取 Kubernetes 集群上的可用节点列表。
在输出结果中可以看到,当前的 Kubernetes 集群节点数量,并详细展示每个节点的名字、状态、角色、存活时间、Kubernetes 版本号、内部 IP、操作系统类型、内核版本和容器运行时等信息。
- 查看 Pod 列表
输入以下命令获取在 Kubernetes 集群上运行的 Pod 列表,确保所有的容器状态都是 Running。
3.3 验证节点镜像列表
下面展示一下最小化部署一套 KubeSphere 和 Kubernetes 集群到底依赖哪些镜像,以及镜像的下载地址、TAG、大小。
- Control 节点的镜像列表(29 个)
- Worker 节点的镜像列表(11 个)
免责声明:
- 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
- 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境。由此引发的任何问题,作者概不负责!