离线安装 KubeSphere 3.3.2 完整指南
在企业环境中,出于安全考虑或网络限制,很多生产环境无法直接访问互联网。本文将详细介绍如何在离线环境中使用原生 kubectl 命令安装 KubeSphere 3.3.2,帮助企业用户在无外网访问的环境中部署这一强大的容器管理平台。
场景背景
许多企业在部署容器平台时,出于安全合规要求,生产环境通常处于内网或隔离网络中,无法直接访问外部网络。在这种情况下,需要通过离线安装的方式部署 KubeSphere。本文将介绍如何使用原生 kubectl 命令完成 KubeSphere 3.3.2 的离线安装,并提供实时查看安装日志的方法。
环境准备
系统要求
- 操作系统:CentOS 7.8/7.9 或 Ubuntu 18.04/20.04
- Kubernetes 版本:v1.20.x、v1.21.x、v1.22.x、v1.23.x、v1.24.x、v1.25.x 或 v1.26.x
- 最低硬件配置:CPU > 1 核,内存 > 2 GB
- 集群中需配置默认存储类型
准备离线安装包
注意:如果您需要完整的离线镜像包,可以联系张师傅获取,微信号:ggttxlss。我们提供 load.sh 脚本用于导入所有涉及的镜像。
安装前请确保已准备好以下文件:
离线环境安装步骤
-
将下载的所有文件通过 U 盘或其他介质拷贝到离线环境的服务器上。
-
导入镜像到本地镜像仓库:
提示:如果您已从张师傅处获取了完整的离线镜像包,可以使用提供的 load.sh 脚本导入所有涉及的镜像。
- (可选)移除 master 节点的污点,允许在 master 节点上部署 Pod:
kubectl taint nodes k8s-master node-role.kubernetes.io/master-
- (如果需要网络插件)安装 Calico 网络插件:
kubectl apply -f calico.yaml
- 安装 KubeSphere:
# 注意:离线安装时需要检查 kubesphere-installer.yaml 文件中的镜像拉取策略
# 如果 imagePullPolicy 设置为 Always,需要修改为 IfNotPresent
kubectl apply -f kubesphere-installer.yaml
kubectl apply -f 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
- 访问 KubeSphere 控制台:
# 控制台地址:http://<节点IP>:30880
# 默认账号:admin
# 默认密码:P@88w0rd
重要提示:如果在 cluster-configuration.yaml 中开启了 Redis 高可用模式(enableHA: true),但 redis-ha-server 的副本数为 1,则可能导致登录失败。请确保 Redis 高可用配置正确。
验证安装
安装完成后,可以通过以下方式验证 KubeSphere 是否正常运行:
- 检查 Pod 状态:
kubectl get pod -n kubesphere-system
- 访问 KubeSphere 控制台:
- 控制台地址:http://<节点IP>:30880
- 默认账号:admin
- 默认密码:P@88w0rd
配置优化
存储配置
为确保 KubeSphere 各组件正常运行,建议配置持久化存储:
spec:
persistence:
storageClass: "" # 如果集群中没有默认 StorageClass,需要在此指定一个现有的 StorageClass
启用可插拔组件
根据实际需求,可以在 cluster-configuration.yaml 中启用相应的可插拔组件:
spec:
persistence:
storageClass: ""
authentication:
jwtSecret: "" # 保持与主集群的 jwtSecret 一致
etcd:
monitoring: false # 启用 etcd 监控面板
endpointIps: localhost # etcd 集群地址
port: 2379 # etcd 端口
tlsEnable: true # 是否启用 TLS
common:
redis:
enabled: true
enableHA: false # 是否启用高可用模式
volumeSize: 2Gi # Redis PVC 大小
openldap:
enabled: true
volumeSize: 2Gi # openldap PVC 大小
minio:
volumeSize: 20Gi # Minio PVC 大小
monitoring:
GPUMonitoring: # 启用 GPU 相关指标监控
enabled: false
alerting: # 启用 KubeSphere 告警系统
enabled: false
auditing: # 启用 KubeSphere 审计日志系统
enabled: false
devops: # 启用 KubeSphere DevOps 系统
enabled: false
jenkinsMemoryLim: 8Gi # Jenkins 内存限制
jenkinsMemoryReq: 4Gi # Jenkins 内存请求
jenkinsVolumeSize: 8Gi # Jenkins 存储大小
events: # 启用 KubeSphere 事件系统
enabled: false
logging: # 启用 KubeSphere 日志系统
enabled: false
logsidecar:
enabled: true
replicas: 2
metrics_server: # 启用 metrics-server,支持 HPA
enabled: true
multicluster: # 多集群配置
clusterRole: none # host | member | none
network:
networkpolicy: # 网络策略
enabled: false
ippool: # Pod IP 池
type: none
topology: # 服务拓扑
type: none
openpitrix: # KubeSphere 应用商店
store:
enabled: true
servicemesh: # KubeSphere 服务网格(基于 Istio)
enabled: false
edgeruntime: # 边缘节点支持
enabled: false
gatekeeper: # Gatekeeper
enabled: false
terminal:
timeout: 600 # 终端超时时间(秒)
故障排除
镜像拉取失败
如果遇到镜像拉取失败的问题,请检查:
- 镜像是否已正确导入到私有镜像仓库
- cluster-configuration.yaml 中的 privateRegistry 配置是否正确
- 网络策略是否允许访问私有镜像仓库
安装卡住
如果安装过程长时间无响应,可以通过以下方式排查:
- 检查 ks-installer Pod 日志
- 确认 Kubernetes 集群状态正常
- 检查存储配置是否正确
总结
通过本文介绍的步骤,可以在完全离线的环境中成功部署 KubeSphere 3.3.2。离线安装虽然步骤较多,但只要按照文档操作,就能顺利完成部署。对于企业用户来说,这种方式能够满足安全合规要求,同时享受 KubeSphere 带来的容器管理便利。
评论区