Kubernetes与KubeSphere离线部署全攻略:从零搭建企业级容器平台
一、实际应用场景背景
在企业级微服务架构中,容器编排平台发挥着关键作用。若依微服务项目通过Kubernetes和KubeSphere的组合,实现了高效的容器化部署和管理。本文将重点介绍如何离线部署Docker、Kubernetes 1.23.17集群和KubeSphere 3.3.2平台,并简要说明其基本使用方法。
二、基础环境准备
重要提醒:由于安装包使用网盘,其链接经常被取消分享,请联系张师傅(微信:ggttxlss)获取完整的离线安装包。


2.1 服务器规划
- Master节点:1台(4核8GB)
- Worker节点:2台(8核16GB)
- 操作系统:CentOS 7.9
- 网络互通且已准备离线安装包
2.2 系统配置
# 设置主机名
hostnamectl set-hostname k8s-master01 # 在master节点执行
hostnamectl set-hostname k8s-worker01 # 在worker节点执行
hostnamectl set-hostname k8s-worker02 # 在worker节点执行
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 关闭swap
swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab
# 配置内核参数
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
三、Docker离线安装
3.1 卸载旧版本Docker
# 查询旧版本docker安装包
yum list installed | grep docker
# 卸载旧版本docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine -y
3.2 安装Docker 24.0.2
-
准备离线安装包:
对于离线环境,需要提前准备Docker离线安装包。可以通过联系张师傅(微信:ggttxlss)获取完整的离线安装包。
也可以访问张师傅的技术博客获取更多资源:https://howlaisi.com -
创建目录并解压安装包:
mkdir -p /data/ks332/docker24.0.2
# 将docker24.0.2.tgz解压到/data/docker24.0.2目录
tar -xvf docker24.0.2.tgz -C /data/docker24.0.2
- 安装Docker:
cd docker24.0.2
rpm -ivh --force --nodeps *.rpm
- 配置Docker daemon:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://k8s-harbor:30002"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"data-root": "/data/var/lib/docker",
"log-opts": {
"max-size": "100m"
},
"insecure-registries": ["k8s-harbor:30002"],
"storage-driver": "overlay2"
}
EOF
- 启动Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
四、Kubernetes集群部署
4.1 为什么选择Kubernetes 1.23.17版本
选择Kubernetes 1.23.17版本主要基于以下考虑:
- Kubernetes 1.23.17是最后一个默认容器运行时为Docker的版本
- 与Istio 1.15.x/1.16.x版本兼容性良好
- 在生产环境中经过充分验证
- 与若依微服务项目适配度高
4.2 卸载旧版本Kubernetes
kubeadm reset
rm -rf /root/.kube
rm -rf /etc/cni/net.d
rm -rf /etc/kubernetes/*
ipvsadm -C iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
yum list installed | grep kube
yum remove kube* -y
4.3 安装kubeadm、kubelet和kubectl
-
准备离线安装包:
对于离线环境,需要提前准备Kubernetes离线安装包。可以通过联系张师傅(微信:ggttxlss)获取完整的离线安装包。
也可以访问张师傅的技术博客获取更多资源:https://howlaisi.com -
安装Kubernetes组件:
cd k8s1.23.17
rpm -ivh --force --nodeps *.rpm
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo systemctl enable kubelet
- 配置kubelet:
修改kubelet的启动环境变量(每一台k8s内部的机器,都需要配置):
# 修改kubelet配置文件
vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
# 在Environment行添加--eviction-hard=nodefs.available<10%参数
# 修改前:
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
# 修改后:
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --eviction-hard=nodefs.available<10%"
# 修改后需要重新加载
systemctl daemon-reload && systemctl restart kubelet
# 此段配置主要是用于解决k8s默认75%的磁盘空间被使用,触发Pod驱逐的阈值,默认75%,此处修改为10%(即90%开始驱逐)
4.4 初始化Master节点
使用kubeadm命令初始化集群:
kubeadm init \
--apiserver-advertise-address=192.168.xxx.xxx \ # 替换为master节点实际IP地址
--image-repository registry.aliyuncs.com/google_containers \ # 使用阿里云镜像仓库
--kubernetes-version v1.23.17 \ # 指定Kubernetes版本
--service-cidr=10.96.0.0/16 \ # 指定Service网络CIDR
--pod-network-cidr=10.244.0.0/16 # 指定Pod网络CIDR,需与Calico配置一致
参数解释:
--apiserver-advertise-address:指定API Server监听的IP地址,应设置为Master节点的实际IP--image-repository:指定镜像仓库地址,使用阿里云镜像仓库以提高下载速度--kubernetes-version:指定要安装的Kubernetes版本--service-cidr:指定Service网络的CIDR范围--pod-network-cidr:指定Pod网络的CIDR范围,需要与网络插件配置保持一致
4.5 配置kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
4.6 部署网络插件
使用Calico作为网络插件,Calico配置文件: calico.yaml):
kubectl apply -f calico.yaml
4.7 移除Master节点污点
kubectl taint nodes --all node-role.kubernetes.io/master-
4.8 添加Worker节点
在Master节点初始化完成后,会输出Worker节点加入集群的命令,类似如下:
kubeadm join k8s-master01:6443 --token xxxxxx.xxxxxxxxxxxxxxxx \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
如果忘记该命令,可以使用以下命令重新生成:
kubeadm token create --print-join-command
在所有Worker节点上执行该命令。
4.9 验证集群状态
kubectl get nodes
kubectl get pods -A
五、KubeSphere安装与配置
5.1 安装前准备
确保已有一个正常运行的Kubernetes集群,满足以下要求:
- Kubernetes版本:1.23.17
- 可用资源:CPU > 1核,内存 > 2GB
- 集群中有默认存储类
5.2 配置NFS存储类(默认存储类)
KubeSphere要求集群中必须有默认的StorageClass才能正常工作。在离线环境中,我们可以配置NFS作为默认存储类:
- 在NFS服务器上配置NFS共享目录:
# 安装NFS服务
yum install -y nfs-utils
# 创建NFS共享目录
mkdir -p /data/nfs
# 配置NFS共享
echo "/data/nfs *(rw,no_root_squash)" >> /etc/exports
# 启动NFS服务
systemctl enable --now nfs-server rpcbind
# 在所有Kubernetes节点上安装NFS客户端
yum install -y nfs-utils
- 在Kubernetes集群中部署NFS Subdir External Provisioner:
文件链接:sc.yaml,注意得修改该文件中的nfs-server-ip参数为NFS服务器的IP地址。

kubectl apply -f sc.yaml
- 验证默认存储类配置:
kubectl get storageclass
[root@k8s-master01 ks332]# kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-storage (default) k8s-sigs.io/nfs-subdir-external-provisioner Delete Immediate true 116d
5.3 离线安装步骤
-
准备离线安装包:
对于离线环境,需要提前准备镜像包。可以通过以下方式获取:- 联系张师傅(微信:ggttxlss)获取完整的离线镜像包
- 访问张师傅的技术博客获取更多资源:https://howlaisi.com
-
导入镜像:
使用项目目录下的./files/load.sh脚本导入所有涉及的镜像:chmod +x load.sh sh load.sh -
部署KubeSphere:
使用项目目录下提供的配置文件:执行以下命令进行部署:
# 注意:离线安装时需要检查 kubesphere-installer.yaml 文件中的镜像拉取策略 # 如果 imagePullPolicy 设置为 Always,需要修改为 IfNotPresent # 我们已经将项目中的 kubesphere-installer.yaml 中的 imagePullPolicy 修改为 IfNotPresent # 应用安装器配置 kubectl apply -f ./files/kubesphere-installer.yaml # 应用集群配置 kubectl apply -f ./files/cluster-configuration.yaml -
监控安装进度:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

kubectl get pod -n kubesphere-system
- 访问KubeSphere控制台:
- 地址:http://<节点IP>:30880
- 默认账号:admin
- 默认密码:P@88w0rd

六、KubeSphere基础使用
6.1 登录与界面概览

KubeSphere提供了友好的Web控制台界面,主要包含:
- 左侧导航菜单:平台所有功能模块
- 顶部工具栏:通知、用户设置等
- 主工作区:功能详细内容展示
6.2 工作空间与项目
-
创建工作空间:
- 进入"平台管理" -> "访问控制" -> "工作空间"
- 点击"创建"
- 设置工作空间名称和管理员
-
创建项目:
- 在工作空间下选择"项目" -> "创建项目"
- 设置项目名称和资源配额
6.3 应用部署
通过KubeSphere可以便捷地部署应用:
- 进入项目 -> "应用负载" -> "工作负载"
- 点击"创建"选择Deployment或StatefulSet
- 配置容器镜像、端口和资源限制
- 设置健康检查探针
6.4 配置管理
- ConfigMap:存储应用配置信息
- Secret:存储敏感数据如密码、token等
七、总结
本文介绍了Docker、Kubernetes 1.23.17集群和KubeSphere 3.3.2平台的离线部署过程。通过离线安装方式,可以在无法访问外网的环境中完成整个容器平台的部署。KubeSphere作为Kubernetes的增强平台,提供了可视化界面和丰富的功能模块,显著降低了Kubernetes的使用门槛。
通过合理的架构设计和配置管理,可以为若依微服务项目提供稳定、高效的容器化部署环境。
重要提示:如果您在部署过程中遇到任何问题,欢迎在评论区留言讨论。如果文章对您有帮助,请点赞支持!
参考文档
温馨提示
由于网络环境或文件存储等因素,若相关文件或图片链接暂时无法访问,您也可以通过访问张师傅的好来斯技术博客获取更多相关资源和最新信息。
本篇文章原始链接:
https://www.howlaisi.com/categories/ruoyi/ruo-yi-wei-fu-wu-xiang-mu-yun-yuan-sheng-bu-shu-shi-zhan-cong-gitlabdao-kubernetesquan-zhan-zhi-nan
发布平台
- HOWLAISI
- CSDN
评论区