CentOS离线Kubekey一键部署K8s集群指南
CentOS离线Kubekey一键部署K8s集群指南
在云计算和容器化技术日益盛行的今天,Kubernetes(K8s)作为容器编排的领头羊,已经成为众多企业构建现代化应用架构的首选。然而,对于处于内网环境或需要严格管控软件来源的企业而言,如何在CentOS系统上实现K8s集群的离线部署,成为了一个亟待解决的问题。本文将详细介绍如何使用Kubekey这一工具,在CentOS环境下实现K8s集群的离线一键部署,为开发者及企业用户提供一套高效、可靠的解决方案。
一、环境准备
1.1 硬件要求
- 节点数量:至少需要1个Master节点和1个Worker节点,推荐配置为3个Master节点和若干Worker节点以提高可用性。
- CPU与内存:Master节点建议至少4核CPU、8GB内存;Worker节点根据实际负载调整,建议不低于2核CPU、4GB内存。
- 磁盘空间:每个节点至少预留100GB磁盘空间用于容器存储。
1.2 软件要求
- 操作系统:CentOS 7或CentOS 8,确保系统已更新至最新版本。
- 网络环境:节点间需网络互通,且Master节点需能访问外网(仅在首次部署时用于下载离线包,后续可完全离线操作)。
- 依赖工具:提前安装好
wget
、tar
、ssh
等基础工具。
二、Kubekey安装与配置
2.1 下载Kubekey离线包
由于是离线部署,首先需要在一台能访问外网的CentOS机器上下载Kubekey及其依赖的K8s组件离线包。
# 示例:下载Kubekey最新版(请根据实际情况调整版本号)
wget https://github.com/kubesphere/kubekey/releases/download/vX.Y.Z/kubekey-vX.Y.Z-linux-amd64.tar.gz
tar -xvf kubekey-vX.Y.Z-linux-amd64.tar.gz
chmod +x kk
同时,使用Kubekey的export
命令导出所需K8s版本及其依赖组件的离线包。
# 示例:导出K8s 1.23版本的离线包
./kk create cluster --with-kubernetes v1.23.0 --with-local-storage --with-kubesphere v3.3.0 -f config-sample.yaml
# 此步骤会生成一个包含所有依赖的tar包,需将其传输至离线环境
2.2 传输离线包至目标环境
将下载的Kubekey二进制文件及导出的离线包通过U盘、内部文件服务器等方式传输至CentOS离线环境的Master节点。
三、配置文件定制
3.1 创建配置文件
在Master节点上,根据实际环境修改Kubekey的配置文件(如config-sample.yaml
),主要配置项包括:
- 集群名称:自定义集群名称。
- K8s版本:与之前导出的离线包版本一致。
- 网络插件:如Calico、Flannel等。
- 节点信息:包括IP地址、角色(Master/Worker)、SSH端口、用户名及密码或密钥文件路径。
- 存储类型:根据需求配置本地存储或外部存储。
3.2 示例配置片段
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: my-cluster
spec:
kubernetes:
version: v1.23.0
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
nodes:
- role: master
hostName: master1
ip: 192.168.1.10
ssh:
port: 22
user: root
password: "your_password" # 或使用sshKeyPath指定密钥文件
- role: worker
hostName: worker1
ip: 192.168.1.11
ssh:
# 同上配置worker节点
四、集群部署
4.1 执行部署命令
在Master节点上,使用Kubekey执行部署命令:
# 解压离线包(如果之前未解压)
tar -xvf kubernetes-v1.23.0-offline.tar.gz
# 进入解压后的目录
cd kubernetes-v1.23.0-offline
# 执行部署
./kk create cluster -f /path/to/your/config.yaml
4.2 监控部署过程
部署过程中,Kubekey会显示详细的部署日志,包括每个节点的初始化、组件安装等步骤。耐心等待部署完成,期间可通过kubectl get nodes
命令(部署完成后)查看节点状态。
五、集群验证与使用
5.1 验证集群状态
部署完成后,首先验证集群状态:
# 设置kubectl上下文(如果尚未设置)
export KUBECONFIG=/etc/kubernetes/admin.conf
# 查看节点状态
kubectl get nodes
# 应显示所有节点为Ready状态
5.2 部署示例应用
为了验证集群功能,可以部署一个简单的Nginx应用:
# 创建Nginx Deployment
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
EOF
# 暴露服务
kubectl expose deployment nginx-deployment --type=NodePort --port=80
# 获取服务访问地址
kubectl get svc nginx-deployment
通过浏览器或curl
命令访问返回的NodePort端口,验证Nginx服务是否正常运行。
六、总结与展望
通过上述步骤,我们成功在CentOS环境下利用Kubekey实现了K8s集群的离线一键部署。这一方法不仅解决了内网环境下的部署难题,还大大提高了部署效率和一致性。未来,随着K8s生态的不断发展,Kubekey等工具也将持续优化,为企业提供更加灵活、高效的容器化解决方案。对于开发者而言,掌握离线部署技能,将有助于在更多复杂环境中快速搭建K8s集群,推动项目的顺利实施。