kube-nova 平台部署文档,开源 k8s 管理平台部署文档

企业级 Kubernetes 多集群管理平台

在线演示 | GitHub | Gitee

🚀 项目简介

Kube-Nova 是一个现代化的企业级 Kubernetes 多集群管理平台,提供直观的 Web 界面和强大的管理能力,帮助企业轻松管理和运维 Kubernetes 集群。

🌟 核心优势

  • 🎯 简单易用 - 直观的操作界面,降低 Kubernetes 使用门槛
  • ⚡ 高性能 - 基于 Go-Zero 微服务架构,支持大规模集群管理
  • 🔒 企业级安全 - 完善的权限管理和审计功能
  • 📊 可观测性 - 集成 Jaeger 链路追踪,实时监控系统状态
  • 🔧 灵活扩展 - 支持多种部署模式,适应不同场景需求

📦 技术栈

组件 技术 说明
后端框架 Go-Zero 高性能微服务框架
前端框架 Vue 3 + TypeScript 现代化前端技术栈
数据库 MySQL 8.0+ 关系型数据存储
缓存 Redis 6.0+ 高性能缓存服务
对象存储 MinIO S3 兼容的对象存储
链路追踪 Jaeger 分布式追踪系统
容器编排 Kubernetes 容器编排引擎

核心功能

  • 多集群管理 - 统一管理多个 Kubernetes 集群
  • 工作负载管理 - Deployment、StatefulSet、DaemonSet 等资源管理
  • 服务发现 - Service、Ingress 配置管理
  • 存储管理 - PV、PVC、StorageClass 管理
  • 配置管理 - ConfigMap、Secret 管理
  • 权限管理 - RBAC 权限控制
  • 监控告警 - 集成 Prometheus,实时监控
  • 日志管理 - 集中式日志查看和检索
  • 终端访问 - Web Shell 快速访问容器
  • CI/CD 集成 - 支持主流 CI/CD 工具集成

🏗️ 系统架构

┌─────────────────────────────────────────────────────────────┐
│                         用户层                                │
│                      Web UI / API                            │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                       应用层 (Go-Zero)                        │
├─────────────────────────────────────────────────────────────┤
│  Portal API    │  Manager API   │  Workload API  │ Console  │
│  Portal RPC    │  Manager RPC   │                │   API    │
│                │                 │                │ Console  │
│                │                 │                │   RPC    │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                       基础设施层                              │
├─────────────────────────────────────────────────────────────┤
│  MySQL 8x    │  Redis 7x     │  MinIO S3      │  Jaeger  │
│  (数据存储)     │  (缓存)        │  (对象存储)     │  (追踪)   │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes 集群                            │
└─────────────────────────────────────────────────────────────┘

⚡ 快速开始

前置条件

在开始部署之前,请确保您的环境满足以下要求:

硬件要求

组件 最低配置 推荐配置
CPU 4 Core 8+ Core
内存 8 GB 16+ GB
存储 50 GB 100+ GB SSD

软件要求

  • Kubernetes: 1.21 及以上版本
  • kubectl: 与 Kubernetes 版本匹配
  • 存储支持:
    • 支持动态存储供应(StorageClass),或
    • NFS 服务器(静态存储)

网络要求

  • 集群节点之间网络互通
  • 可访问容器镜像仓库(默认:阿里云镜像仓库)
  • 可选:公网访问(用于 Ingress)

📝 部署方式

Kube-Nova 提供两种主要的部署方式:

1️⃣ Operator 模式 (推荐)

特点

  • ✅ 声明式配置,简单直观
  • ✅ 自动化运维,无需手动管理资源
  • ✅ 支持热更新,配置变更自动生效
  • ✅ 内置健康检查和自愈能力

适用场景

  • 生产环境部署
  • 需要频繁更新配置
  • 追求自动化运维

2️⃣ Manifests 模式

特点

  • ✅ 完全自定义,灵活性高
  • ✅ 适合特殊需求定制
  • ✅ 无额外依赖

适用场景

  • 开发测试环境
  • 需要深度定制
  • 不希望引入 Operator

快速部署

🔧 基础环境部署

在部署 Kube-Nova 平台之前,需要先部署基础依赖服务。我们提供了一键部署脚本,可快速完成所有基础服务的部署。

注意, 如果本地已经有 mysql,redis,minio,Jaeger 可以忽略本步骤。

平台提供基础环境部署

  1. 克隆代码仓库
# 从 GitHub 克隆
git clone https://github.com/yanshicheng/kube-nova.git
cd kube-nova

# 或从 Gitee 克隆(国内推荐)
git clone https://gitee.com/ikubeops/kube-nova.git
cd kube-nova
  1. 部署关键点

编辑部署脚本,选择存储模式:

vim scripts/basic-deploy.sh

修改以下配置项:

# 存储模式:storageClass 或 nfs
STORAGE_MODE="storageClass" # 需要集群哪已经配置了 storageClass


# 如果选择 nfs 模式,需要先配置 NFS 服务器
# 需要手动修改文件: manifests/basic/pvc-nfs.yaml 
  1. StorageClass 模式配置

如果您的 Kubernetes 集群支持动态存储供应,推荐使用此模式:

# 确保集群有可用的 StorageClass
kubectl get storageclass

# 查看默认 StorageClass
kubectl get storageclass -o jsonpath='{.items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")].metadata.name}'
  1. NFS 模式配置

如果使用 NFS 静态存储,需要先准备 NFS 服务器:

# 1. 在 NFS 服务器上创建共享目录
sudo mkdir -p /nfs/kube-nova/{mysql,redis,minio,jaeger}
sudo chmod -R 777 /nfs/kube-nova

# 2. 配置 NFS 导出
sudo vim /etc/exports
# 添加以下内容:
# /nfs/kube-nova *(rw,sync,no_subtree_check,no_root_squash)

# 3. 重启 NFS 服务
sudo exportfs -ra
sudo systemctl restart nfs-server

# 4. 在所有 Kubernetes 节点安装 NFS 客户端
# Ubuntu/Debian
sudo apt-get install -y nfs-common

# CentOS/RHEL
sudo yum install -y nfs-utils

编辑 NFS PVC 配置文件:

vim manifests/basic/pvc-nfs.yaml
# 修改 NFS 服务器地址和路径
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 192.168.1.100  # 修改为您的 NFS 服务器 IP
    path: /nfs/kube-nova/mysql  # 修改为实际路径
  1. 执行一键部署
bash scripts/basic-deploy.sh
  1. 部署过程说明

脚本将自动完成以下步骤:

  1. 环境检查 - 检查 kubectl、集群连接、存储配置
  2. 创建命名空间 - 创建 kube-nova 命名空间
  3. 部署 PVC - 根据选择的存储模式创建持久化存储
  4. 等待 PVC 绑定 - 等待所有 PVC 成功绑定
  5. 部署基础服务 - 依次部署 MySQL、Redis、MinIO、Jaeger
  6. 等待服务就绪 - 等待所有 Pod 进入 Running 状态
  7. 初始化 MinIO - 创建存储桶并上传默认图片
  8. 导入数据库 - 初始化 MySQL 数据库表结构和基础数据
  9. 显示访问信息 - 输出所有服务的访问地址和凭证

已有环境部署

Mysql: 请手动导入 代码仓库中 sql/db.sql 到数据库中。
Minio: 上传 images/kube-nova.png 到 存储桶 public/kube-nova.png


Operator 模式部署 kube-nova 平台

Operator 模式是推荐的生产环境部署方式,提供声明式配置和自动化运维能力。

部署 Kube-Nova Operator

从 GitHub 部署

kubectl apply -f https://github.com/yanshicheng/kube-nova-operator/releases/download/latest/install.yaml

从 Gitee 部署

kubectl apply -f https://gitee.com/ikubeops/kube-nova-operator/releases/download/latest/install.yaml

验证 Operator 部署

# 查看 Operator Pod 状态
❯ kubectl get pods -n kube-nova-operator-system
NAME                                                     READY   STATUS    RESTARTS   AGE
kube-nova-operator-controller-manager-6d5976586d-z5j7w   1/1     Running   0          66s
# 查看 CRD 是否创建成功

❯ kubectl get crd kubenova.apps.ikubeops.com
NAME                         CREATED AT
kubenova.apps.ikubeops.com   2025-12-23T09:40:47Z

Ingress 模式部署平台

# 从 GitHub 下载配置模板
wget https://github.com/yanshicheng/kube-nova-operator/releases/download/latest/deploy-ingress.yaml

# 或从 Gitee 下载(国内推荐)
wget https://gitee.com/ikubeops/kube-nova-operator/releases/download/latest/deploy-ingress.yaml

编辑配置文件:
按需修改配置文件。

vim deploy-ingress.yaml 

最小化配置示例(适用于一键部署的基础环境):

apiVersion: apps.ikubeops.com/v1
kind: KubeNova
metadata:
  name: kubenova-sample
  namespace: kube-nova
spec:
  # 全局镜像仓库配置(可选)
  imageRegistry:
    registry: "registry.cn-hangzhou.aliyuncs.com"
    organization: "kube-nova"
    tag: "latest"
    pullPolicy: Always

  # 数据库配置(必填)
  database:
    host: "mysql"
    port: 3306
    database: "kube_nova"
    user: "root"
    password: "8VlZ2lvIsKBCYSE3"
    maxOpenConns: 100
    maxIdleConns: 50
    connMaxLifetime: "30m"

  # 缓存配置(必填)
  cache:
    host: "redis"
    port: 6379
    type: "node"  # node 或 cluster
    password: "2VOSiz0vhGtxaBJb"
    tls: false
    nonBlock: true
    pingTimeout: "3s"

  # 对象存储配置(必填)
  storage:
    endpoint: "minio-service:9000"
    accessKey: "kube-nova-admin"
    secretKey: "KubeNova@2024SecretKey!"
    bucket: "kube-nova"
    endpointProxy: "http://kube-nova.ngw.ikubeops.local/storage/"
    # TLS 证书配置(可选)
    # tls:
    #   enabled: true
    #   secretName: "minio-tls-certs"  # 包含 public.crt 和 private.key

  # 链路追踪配置(可选)
  telemetry:
    enabled: true
    jaegerEndpoint: "http://jaeger-collector:14268/api/traces"
    sampler: "1.0"
    batcher: "jaeger"

  services:
    globalTimeout: 30000

    # JWT 配置(必填)
    jwt:
      accessSecret: "zk5Lp8m+0g7lvvLcnbUHPzQFEsRAmvNIn9tXdx0o80U="
      accessExpire: 86400
      refreshSecret: "zk5Lp8m+0g7lvvLcnbUHPzQFEsRAmvNIn9tXdx0o80U="
      refreshExpire: 604800
      refreshAfter: 604800

    # Portal 配置(可选)
    portal:
      name: "Kube-Nova 云原生平台"
      url: "http://kube-nova.ngw.ikubeops.local"
      demoMode: false

    # Webhook Token(可选)
    webhookToken: "mRwErqZaQVrxfyhiDQrdiQohAsONwSTtwhcmFXpCcaGavcINqorVoWINnSFFAijb"

    # 注入镜像(可选)
    injectImage: "registry.cn-hangzhou.aliyuncs.com/kube-nova/network-multitool:latest"

    # 各个服务的配置(可选,使用默认值)
    # portalAPI:
    #   enabled: true
    #   replicas: 2
    # portalRPC:
    #   enabled: true
    #   replicas: 2
    # managerAPI:
    #   enabled: true
    #   replicas: 2
    # managerRPC:
    #   enabled: true
    #   replicas: 2
    # workloadAPI:
    #   enabled: true
    #   replicas: 2
    # consoleAPI:
    #   enabled: true
    #   replicas: 2
    # consoleRPC:
    #   enabled: true
    #   replicas: 2

  # ==================================================
  # Web 前端配置(必填)
  # ==================================================
  web:
    replicas: 2
    exposeType: "ingress"
    ingress:
      className: "nginx"
      host: "kube-nova.ngw.ikubeops.local"
      tls:
        enabled: false

    minioProxy:
      enabled: true
      pathPrefix: "/storage"

验证访问

执行下面命令等待就绪可通过访问地址访问平台。

❯ kubectl get kn -n kube-nova
NAME              阶段    WEB   访问地址                                  运行时长
kubenova-sample   就绪    就绪    http://kube-nova.ngw.ikubeops.local   54s

浏览器访问

用户名: super_admin
密码: Admin@123456
image

快速配置

纳管管理集群,可直接通过 in-cluster 认证方式直接纳管部署集群。

管理集群纳管

  1. 集群基本信息
    image
  2. 集群认证
    image
  3. 确认创建
    image

配置集群中间件

  1. 集群管理 -> 集群管理 -> 选择集群 进入控制台 -> 中间件管理 -> 配置 prometheus
    没有可忽略但是监控功能不可用。
    进入集群控制台
    image
    中间件管理
    image
    配置 prometheus 连接信息, 注意要同时设置为默认
    image

image

配置集群存储

  1. 集群管理 -> 集群管理 -> 选择集群 进入控制台 -> 资源信息 -> 存储
    存储资源初始化集群的时候没有进行计算,需要手动配置资源信息。
    ![image](https://img2024.cnblogs.com/blog/1445345/202512/1445345-20251225135923763-112image
    image

服务功能验证

  1. 选择默认项目
    新集群所有信息都会在 默认项目下,可根据具体业务创建项目 进行名称空间迁移,迁移工作不会影响 kubernetes 集群。平台层逻辑迁移。
    image

  2. 业务中心 -> 应用中心 -> 选择集群 -> 选择 ns -> 选择服务 -> 版本管理
    可以测试 日志,终端 文件等功能。
    image

其他部署模式

NodePort 模式部署

适用于测试环境或没有 Ingress 控制器的场景:

# 从 GitHub 下载配置模板
wget https://github.com/yanshicheng/kube-nova-operator/releases/download/latest/deploy-nodeport.yaml

# 或从 Gitee 下载(国内推荐)
wget https://gitee.com/ikubeops/kube-nova-operator/releases/download/latest/deploy-nodeport.yaml

编辑配置文件:

vim deploy-nodeport.yaml

修改 Web 配置部分:

  web:
    replicas: 2
    exposeType: "nodeport"
    nodePort:
      httpPort: 30080  # 可选,不指定则自动分配
      https:
        enabled: false
        # port: 30443
        # secretName: "kube-nova-tls"

更多配置模板

更多部署配置模板和示例,请参考:


📦 Manifests 模式部署

如果您不希望使用 Operator,可以直接使用 Kubernetes 原生 Manifests 部署。

部署步骤

# 1. 克隆代码仓库
git clone https://gitee.com/ikubeops/kube-nova.git
cd kube-nova

# 2. 编辑配置文件
# 修改 manifests/base/ 目录下的 YAML 文件
vim manifests/base/configmap.yaml  # 修改数据库、Redis、MinIO 等配置

# 3. 应用所有 Manifests
kubectl apply -f manifests/base/

# 4. 查看部署状态
kubectl get all -n kube-nova

配置文件说明

Manifests 模式下,您需要手动编辑以下配置文件:

manifests/base/
├── configmap.yaml          # 应用配置
├── secret.yaml             # 敏感信息(密码、密钥)
├── deployment-portal.yaml  # Portal 服务部署
├── deployment-manager.yaml # Manager 服务部署
├── deployment-workload.yaml # Workload 服务部署
├── deployment-console.yaml # Console 服务部署
├── deployment-web.yaml     # Web 前端部署
├── service.yaml            # Service 配置
└── ingress.yaml            # Ingress 配置(或 nodeport.yaml)

具体配置方法请参考各文件中的注释说明。


⚙️ 配置说明

核心配置项详解

以下是 Kube-Nova 平台的核心配置项说明(基于 Operator CRD 定义):

1. 镜像仓库配置 (ImageRegistry)

imageRegistry:
  registry: "registry.cn-hangzhou.aliyuncs.com"  # 镜像仓库地址
  organization: "kube-nova"                       # 组织/项目名称
  tag: "latest"                                   # 默认镜像标签
  pullPolicy: "Always"                            # 镜像拉取策略: Always/IfNotPresent/Never
  pullSecrets:                                    # 镜像拉取密钥(可选)
    - "my-registry-secret"

说明

  • 默认使用阿里云杭州镜像仓库,国内访问速度快
  • 如使用私有仓库,需要创建 Secret:
    kubectl create secret docker-registry my-registry-secret \
      --docker-server=registry.example.com \
      --docker-username=user \
      --docker-password=password \
      -n kube-nova
    

2. 数据库配置 (Database)

database:
  host: "mysql.kube-nova.svc.cluster.local"  # 数据库主机地址
  port: 3306                                  # 数据库端口
  database: "kube_nova"                       # 数据库名称
  user: "root"                                # 用户名
  password: "8VlZ2lvIsKBCYSE3"               # 密码(将自动存储到 Secret)
  maxOpenConns: 100                           # 最大打开连接数(可选)
  maxIdleConns: 50                            # 最大空闲连接数(可选)
  connMaxLifetime: "30m"                      # 连接最大生命周期(可选)

说明

  • 支持 MySQL 8.0 及以上版本
  • 密码将被 Operator 自动加密存储到 Secret
  • 连接池配置根据实际负载调整步骤 3: 部署 Kube-Nova 平台

3. 缓存配置 (Cache)

cache:
  host: "redis.kube-nova.svc.cluster.local"  # Redis 主机地址
  port: 6379                                  # Redis 端口
  type: "node"                                # 类型: node(单机) 或 cluster(集群)
  password: "2VOSiz0vhGtxaBJb"               # 密码(可选)
  tls: false                                  # 是否启用 TLS
  nonBlock: true                              # 是否使用非阻塞模式
  pingTimeout: "3s"                           # Ping 超时时间

说明

  • 支持 Redis 单机和集群模式
  • 如无密码可不填 password 字段
  • TLS 适用于生产环境加密传输

4. 对象存储配置 (Storage)

storage:
  endpoint: "minio-service.kube-nova.svc.cluster.local:9000"  # 存储端点(不含 http(s)://)
  endpointProxy: "https://www.example.com/storage"             # 代理端点(可选)
  accessKey: "kube-nova-admin"                                 # 访问密钥 ID
  secretKey: "KubeNova@2024SecretKey!"                        # 访问密钥(将自动存储到 Secret)
  bucket: "kube-nova"                                          # 存储桶名称
  tls:                                                         # TLS 配置(可选)
    enabled: false                                             # 是否启用 TLS
    secretName: "minio-tls-cert"                              # TLS 证书 Secret 名称

说明

  • 支持 MinIO 或任何 S3 兼容的对象存储
  • endpointProxy 用于配置用户访问入口(通常是 Nginx 代理后的地址)
  • TLS 证书 Secret 格式:
    kubectl create secret generic minio-tls-cert \
      --from-file=public.crt=cert.pem \
      --from-file=private.key=key.pem \
      -n kube-nova
    

5. 链路追踪配置 (Telemetry)

telemetry:
  enabled: true                                                         # 是否启用
  jaegerEndpoint: "http://jaeger-collector:14268/api/traces"          # Jaeger Collector 端点
  sampler: "1.0"                                                       # 采样率 (0.0-1.0)
  batcher: "jaeger"                                                    # 批处理器类型

说明

  • 链路追踪为可选功能,不启用不影响平台使用
  • sampler 设置为 1.0 表示采样所有请求,0.1 表示采样 10%
  • 生产环境建议适当降低采样率以减少性能开销

6. 服务配置 (Services)

services:
  globalTimeout: 30000  # 全局超时时间(毫秒)

  # JWT 认证配置
  jwt:
    accessSecret: "your-access-secret-at-least-32-chars-long-123456"   # 访问令牌密钥(至少32字符)
    accessExpire: 86400                                                 # 访问令牌过期时间(秒,默认24小时)
    refreshSecret: "your-refresh-secret-at-least-32-chars-long-123456" # 刷新令牌密钥(至少32字符)
    refreshExpire: 604800                                               # 刷新令牌过期时间(秒,默认7天)
    refreshAfter: 604800                                                # 刷新令牌生效时间(秒)

  # Portal 门户配置
  portal:
    name: "Kube-Nova 云原生平台"   # Portal 名称
    url: "https://www.ikubeops.com"  # Portal 访问地址
    demoMode: false                   # 是否启用演示模式

  # 其他配置
  webhookToken: "your-webhook-token"  # Alertmanager Webhook Token(可选)
  injectImage: "registry.cn-hangzhou.aliyuncs.com/kube-nova/network-multitool:latest"  # 注入容器镜像

  # 各微服务配置(可选,不配置则使用默认值)
  portalAPI:
    enabled: true
    replicas: 2
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "512Mi"
        cpu: "500m"

  # 其他服务配置类似...

说明

  • JWT 密钥务必修改为您自己的随机字符串(至少 32 字符)
  • 可以只配置需要的微服务,未配置的使用默认值
  • 资源配置根据实际负载调整

7. Web 前端配置 (Web)

Ingress 模式
web:
  replicas: 2          # 副本数
  exposeType: "ingress"

  ingress:
    className: "nginx"              # Ingress 类名
    host: "www.ikubeops.com"       # 域名
    tls:
      enabled: true                 # 是否启用 HTTPS
      secretName: "kube-nova-tls"  # TLS 证书 Secret
    annotations:                    # 额外的注解(可选)
      nginx.ingress.kubernetes.io/proxy-body-size: "100m"

  # MinIO 代理配置(可选)
  minioProxy:
    enabled: true                   # 是否启用 MinIO 代理
    pathPrefix: "/storage"          # 代理路径前缀
    proxyEndpoint: ""               # 手动指定代理端点(可选,留空则自动推断)

说明

  • 需要提前安装 Ingress 控制器(如 Nginx Ingress Controller)
  • TLS 证书创建方法:
    kubectl create secret tls kube-nova-tls \
      --cert=path/to/tls.crt \
      --key=path/to/tls.key \
      -n kube-nova
    
  • MinIO 代理启用后,可通过 Web 前端直接访问对象存储
NodePort 模式
web:
  replicas: 2
  exposeType: "nodeport"

  nodePort:
    httpPort: 30080     # HTTP 端口(可选,不指定则自动分配)
    https:
      enabled: false     # 是否启用 HTTPS
      port: 30443        # HTTPS 端口(可选)
      secretName: "kube-nova-tls"  # TLS 证书 Secret

说明

  • NodePort 端口范围:30000-32767
  • 适用于测试环境或没有 Ingress 的场景
  • 访问地址:http://<NodeIP>:<NodePort>

完整配置示例

完整的配置示例请参考:


🌐 访问与验证

获取访问地址

Ingress 模式

# 查看 Ingress 配置
kubectl get ingress -n kube-nova

# 预期输出:
# NAME               CLASS   HOSTS                ADDRESS         PORTS     AGE
# kubenova-web       nginx   www.ikubeops.com    10.0.0.1        80, 443   5m

# 访问地址:http(s)://www.ikubeops.com

配置 DNS 解析

  1. 公网域名:在域名服务商处配置 A 记录指向 Ingress Controller 的公网 IP
  2. 内网域名:在本地 hosts 文件中添加:
    <NodeIP>  www.ikubeops.com
    

NodePort 模式

# 查看 NodePort 端口
kubectl get svc -n kube-nova | grep web

# 预期输出:
# kubenova-web       NodePort    10.96.1.1   <none>   80:30080/TCP   5m

# 访问地址:http://<NodeIP>:30080
# 获取 NodeIP
kubectl get nodes -o wide

默认登录凭证

用户名: admin
密码: admin123

⚠️ 首次登录后请立即修改密码!

功能验证

登录后,建议按以下顺序验证功能:

  1. 集群管理 - 添加 Kubernetes 集群连接
  2. 命名空间 - 查看命名空间列表
  3. 工作负载 - 查看 Deployment、Pod 等资源
  4. 服务发现 - 查看 Service、Ingress
  5. 存储管理 - 查看 PV、PVC
  6. 配置管理 - 查看 ConfigMap、Secret
  7. 用户管理 - 创建新用户并配置权限

🔧 运维管理

查看系统状态

# 查看 KubeNova CR 状态
kubectl get kubenova -n kube-nova

# 查看详细状态(包含各组件状态)
kubectl get kubenova kubenova-sample -n kube-nova -o yaml

# 查看所有 Pod 状态
kubectl get pods -n kube-nova -l app.kubernetes.io/managed-by=kube-nova-operator

# 查看服务状态
kubectl get svc -n kube-nova

❓ 常见问题

Q1: 如何修改管理员密码?

A: 登录后,进入 用户管理个人信息修改密码

Q2: 如何添加新的 Kubernetes 集群?

A:

  1. 登录平台,进入 集群管理添加集群
  2. 填写集群信息:
    • 集群名称
    • API Server 地址
    • 认证方式(Token 或 KubeConfig)
  3. 点击 测试连接,成功后保存

Q3: 支持哪些 Kubernetes 版本?

A: Kube-Nova 支持 Kubernetes 1.21 及以上版本,推荐使用 1.24+ 版本。

Q4: 如何启用 HTTPS?

A:

Ingress 模式

  1. 准备 TLS 证书
  2. 创建 Secret:
    kubectl create secret tls kube-nova-tls \
      --cert=tls.crt --key=tls.key -n kube-nova
    
  3. 修改 KubeNova CR 配置:
    web:
      ingress:
        tls:
          enabled: true
          secretName: "kube-nova-tls"
    

NodePort 模式

web:
  nodePort:
    https:
      enabled: true
      port: 30443
      secretName: "kube-nova-tls"

Q5: 如何配置自定义域名?

A: 修改 KubeNova CR 中的 web.ingress.hostservices.portal.url 字段,然后配置 DNS 解析指向 Ingress Controller 的 IP。

Q6: 如何调整服务副本数?

A: 编辑 KubeNova CR,修改对应服务的 replicas 字段:

services:
  portalAPI:
    replicas: 3  # 修改为期望的副本数

应用配置后,Operator 会自动进行滚动更新。

Q7: 如何配置邮件通知?

A: 暂不支持邮件通知功能,该功能正在开发中。您可以集成 AlertManager 实现告警通知。

Q8: 支持多租户吗?

A: 支持。平台提供了完善的多租户和权限管理功能:

  • 用户管理
  • 角色管理
  • 命名空间级别的权限控制
  • 审计日志

Q9: 如何进行性能调优?

A:

数据库优化

database:
  maxOpenConns: 200    # 根据负载调整
  maxIdleConns: 100
  connMaxLifetime: "1h"

Redis 优化

cache:
  type: "cluster"  # 高负载场景使用集群模式

服务资源调整

services:
  portalAPI:
    replicas: 3
    resources:
      requests:
        memory: "512Mi"
        cpu: "500m"
      limits:
        memory: "1Gi"
        cpu: "1000m"

Q10: 如何迁移数据?

A:

  1. 备份源环境数据

    # 备份数据库
    kubectl exec -n kube-nova <mysql-pod> -- \
      mysqldump -uroot -p<password> kube_nova > backup.sql
    
    # 备份 MinIO 数据
    mc mirror myminio/kube-nova /path/to/backup
    
  2. 在新环境部署平台(参考本文档)

  3. 恢复数据

    # 恢复数据库
    kubectl exec -i -n kube-nova <mysql-pod> -- \
      mysql -uroot -p<password> kube_nova < backup.sql
    
    # 恢复 MinIO 数据
    mc mirror /path/to/backup myminio/kube-nova
    

📚 参考资源

官方资源

社区支持


📄 许可证

本项目采用 Apache License 2.0 开源协议。详见 LICENSE 文件。


🤝 贡献

欢迎贡献代码、提交 Issue 或改进文档!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📮 联系我们

  • 作者: Yanshicheng
  • 邮箱: ikubeops@gmail.com

⭐ 如果这个项目对您有帮助,请给我们一个 Star!⭐

Copyright © 2024 Kube-Nova by Yanshicheng. All rights reserved.

posted @ 2025-12-17 17:40  闫世成  阅读(368)  评论(0)    收藏  举报