logo

CentOS离线Kubekey一键部署K8s集群指南

作者:很菜不狗2025.09.19 18:30浏览量:0

简介:本文详解在CentOS系统下,如何利用Kubekey工具实现离线环境一键部署K8s集群,涵盖环境准备、依赖下载、配置调整及集群验证等全流程。

CentOS离线Kubekey一键部署K8s集群指南

云计算与容器化技术日益普及的今天,Kubernetes(K8s)已成为管理容器化应用的标准。然而,对于许多企业或开发者而言,在离线环境中部署K8s集群仍是一大挑战。特别是在使用CentOS系统的场景下,如何高效、稳定地完成部署,成为亟待解决的问题。本文将详细介绍如何使用Kubekey工具在CentOS离线环境中一键部署K8s集群,为开发者提供一套可复制、易操作的解决方案。

一、Kubekey工具简介

Kubekey是KubeSphere社区推出的一款轻量级部署工具,它集成了Ansible的强大功能,能够简化K8s集群的部署流程。与传统的部署方式相比,Kubekey具有以下优势:

  • 一键部署:通过简单的命令行操作,即可完成整个集群的部署。
  • 离线支持:支持在离线环境中部署,满足企业内网或安全要求较高的场景。
  • 灵活配置:支持自定义集群规模、网络插件、存储插件等配置。
  • 跨平台兼容:支持多种Linux发行版,包括CentOS、Ubuntu等。

二、离线环境准备

在开始部署之前,需要做好充分的离线环境准备。这包括:

  1. CentOS系统安装:确保所有节点(包括Master和Worker节点)均已安装CentOS 7或CentOS 8系统,并配置好基本的网络环境。
  2. 依赖包下载:由于是在离线环境中部署,需要提前下载好所有依赖包。这包括Kubekey本身、K8s相关组件、Docker或containerd等容器运行时、以及网络插件(如Calico、Flannel)等。
    • 可以通过在有网络的机器上使用yum install --downloadonly --downloaddir=/path/to/download命令下载所需RPM包。
    • 对于K8s组件和Docker/containerd,可以从官方网站或镜像仓库下载对应的二进制文件或镜像包。
  3. 内网镜像仓库搭建(可选):如果企业内网有镜像仓库,可以提前将所需镜像推送至内网仓库,以便在部署时直接拉取。

三、Kubekey部署K8s集群步骤

1. 上传并解压Kubekey及依赖包

将之前下载好的Kubekey安装包及所有依赖包上传至CentOS节点的指定目录(如/opt/k8s-offline),并解压。

  1. mkdir -p /opt/k8s-offline
  2. # 假设所有文件已上传至/tmp目录
  3. cp /tmp/*.tar.gz /tmp/*.rpm /opt/k8s-offline/
  4. cd /opt/k8s-offline
  5. tar -zxvf kubekey-*.tar.gz
  6. # 解压其他依赖包,如Docker、Calico等

2. 安装Kubekey

进入Kubekey解压后的目录,执行安装命令。由于是在离线环境中,需要确保所有依赖已满足。

  1. cd kubekey-*
  2. # 假设已将所有依赖RPM包放在当前目录的rpms子目录下
  3. export PATH=$PATH:/usr/local/bin
  4. ./kk create cluster --with-kubernetes v1.20.4 --with-local-storage --with-network-plugin=calico -f config-sample.yaml --skip-pull-images
  5. # 注意:--skip-pull-images参数表示跳过镜像拉取,因为我们是离线部署

在实际操作中,config-sample.yaml文件需要根据你的环境进行修改,包括集群名称、节点IP、SSH端口、用户名密码等。同时,由于是离线部署,需要在配置文件中指定本地镜像路径或内网镜像仓库地址。

3. 自定义配置调整

在部署前,务必仔细检查并调整config-sample.yaml文件中的各项配置。以下是一些关键配置项:

  • cluster:集群基本信息,如名称、K8s版本等。
  • hosts:节点列表,包括角色(Master/Worker)、IP地址、SSH登录信息等。
  • network:网络插件配置,如Calico的CIDR范围等。
  • storage:存储插件配置,如Local Volume的配置等。
  • images:镜像配置,在离线环境中需要指定本地路径或内网仓库地址。

4. 执行部署命令

确认配置无误后,执行部署命令。Kubekey将自动完成以下操作:

  • 在所有节点上安装必要的依赖包。
  • 配置SSH免密登录(如果尚未配置)。
  • 下载并安装K8s组件、容器运行时及网络插件。
  • 初始化Master节点,并加入Worker节点。
  • 配置网络插件和存储插件。

部署过程中,可以通过查看日志文件(如/root/.kk/logs/下的相关文件)来监控部署进度和排查问题。

四、部署后验证与配置

1. 验证集群状态

部署完成后,首先验证集群状态是否正常。

  1. kubectl get nodes
  2. # 应该看到所有节点均处于Ready状态

2. 部署测试应用

为了进一步验证集群功能,可以部署一个简单的测试应用,如Nginx。

  1. kubectl create deployment nginx --image=nginx:alpine
  2. kubectl expose deployment nginx --port=80 --type=NodePort
  3. # 获取NodePort端口号
  4. kubectl get svc nginx
  5. # 通过浏览器或curl访问任意Worker节点的对应端口,验证Nginx是否正常运行

3. 配置持久化存储(可选)

如果需要使用持久化存储,可以根据之前配置的存储插件(如Local Volume、NFS等)进行进一步配置。

五、常见问题与解决方案

1. 依赖包缺失

如果在部署过程中遇到依赖包缺失的问题,需要检查是否所有必要的RPM包都已上传并解压至正确目录。同时,确保config-sample.yaml文件中的systemPackage部分配置了正确的包管理器路径和参数。

2. 镜像拉取失败

在离线环境中,镜像拉取失败通常是由于配置了错误的镜像路径或内网仓库地址。需要检查config-sample.yaml文件中的images部分,确保所有镜像路径或仓库地址均可访问。

3. 网络插件配置错误

网络插件配置错误可能导致Pod之间无法通信。需要仔细检查Calico或Flannel等网络插件的配置,确保CIDR范围、接口名称等参数与集群环境匹配。

六、总结与展望

通过本文的介绍,我们了解了如何在CentOS离线环境中使用Kubekey工具一键部署K8s集群。这一方案不仅简化了部署流程,还提高了部署效率和稳定性。未来,随着K8s技术的不断发展,我们可以期待更多类似的轻量级部署工具出现,进一步降低K8s的部署门槛和使用成本。同时,对于企业而言,建立完善的离线部署方案和镜像管理体系,将有助于提升业务连续性和数据安全性。

相关文章推荐

发表评论