🚀 KubePi实战部署指南 | 可视化Kubernetes集群全生命周期管理
作为KubeOperator的增强组件,KubePi提供企业级Kubernetes集群部署能力。以下是基于v3.12.0+的黄金配置流程:


一、环境准备(部署机要求)

组件 规格要求 备注
OS CentOS 7.8+/Ubuntu 20.04 LTS 禁用SELinux
CPU 4核+ 支持虚拟化
内存 8GB+ 建议预留2GB给KubePi
存储 100GB+可用空间 推荐EXT4/XFS文件系统
网络 双向8888/6443端口开放 需配置静态IP
# 验证环境
grep -E '(vmx|svm)' /proc/cpuinfo  # 确认CPU虚拟化支持
free -h | awk '/Mem:/{print $2}'   # 检查内存
df -h /var/lib/docker              # 存储空间验证

二、快速安装KubePi

1. 容器化部署(推荐)

# 创建持久化目录
mkdir -p /data/kubepi/{data,logs,plugins}

# 启动容器
docker run -d \
  --name kubepi \
  --restart always \
  -p 80:80 \
  -v /data/kubepi/data:/var/lib/kubepi \
  -v /data/kubepi/logs:/var/log/kubepi \
  -v /data/kubepi/plugins:/opt/kubepi/plugins \
  kubepi/kubepi-server:3.12.0

2. 初始化访问

  1. 浏览器访问 http://部署机IP
  2. 首次登录使用默认凭证:
    用户名: admin  
    密码: kubepi@admin123  
    
  3. 立即修改密码:系统设置 → 用户管理 → admin用户

三、创建Kubernetes集群

1. 集群参数配置

参数项 推荐值 说明
集群名称 prod-cluster-01 全局唯一标识
Kubernetes版本 v1.25.7 验证兼容性
容器运行时 containerd 1.6.8 优于Docker的稳定性
网络插件 Calico 3.24.1 支持NetworkPolicy
存储配置 NFS Subdir External Provisioner 动态PVC支持
# 示例主机清单文件(hosts.yaml)
- name: master01
  ip: 192.168.1.101
  role: [master, etcd]
  ssh_user: root
  ssh_pass: "SecurePass123!"
  
- name: worker01 
  ip: 192.168.1.102
  role: [worker]
  labels: 
    gpu: "true"
    storage: "ssd"

2. 部署流程

  1. 上传主机清单

    • 导航至集群管理 → 创建集群 → 导入主机
    • 上传预配置的hosts.yaml文件
  2. 定制组件

    [√] Metrics Server     # 资源监控
    [√] Ingress-Nginx      # 流量入口
    [√] OPA Gatekeeper     # 策略引擎
    [ ] Istio              # 按需启用服务网格
    
  3. 高级网络配置

    Service CIDR: 10.96.0.0/16  
    Pod CIDR: 10.244.0.0/16  
    DNS Domain: cluster.local  
    
  4. 执行部署

    • 点击验证主机通过SSH连通性检查
    • 确认无误后启动一键部署

四、关键功能配置

1. OPA策略管理

  1. 进入策略引擎 → 约束模板
  2. 应用预置策略:
    # 强制Pod资源限制
    violation[{"msg": msg}] {
        container := input.review.object.spec.containers[_]
        not container.resources.limits.cpu
        msg := sprintf("容器 %v 必须定义CPU限制", [container.name])
    }
    

2. 存储动态供给

  1. 导航至存储管理 → 存储类
  2. 创建NFS存储类:
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-storage
    provisioner: cluster.local/nfs-subdir-external-provisioner
    parameters:
      archiveOnDelete: "false"
    

五、运维监控

1. 实时仪表盘

面板名称 监控指标 告警阈值
集群健康度 API Server响应延迟 >500ms触发警告
节点负载 CPU/MEM使用率 持续80%超过5分钟
工作负载状态 Deployment不可用副本数 >0持续2分钟

2. 日志聚合

  1. 启用EFK套件:
    # 在KubePi插件市场安装Elasticsearch+Fluentd+Kibana
    kubectl apply -f https://raw.githubusercontent.com/kubepi/plugins/main/efk/install.yaml
    

六、灾备与升级

1. 集群备份

# 创建定时备份任务
velero schedule create daily-backup \
  --schedule="@daily" \
  --include-namespaces="*" \
  --exclude-resources="events,events.events.k8s.io"

2. 原地升级流程

  1. 通过集群管理 → 升级选择目标版本
  2. 采用滚动更新策略:
    Master节点:串行升级,间隔10分钟  
    Worker节点:并行升级,最大不可用30%  
    

⚠️ 关键注意事项

  • 生产环境务必启用HTTPS访问(KubePi支持Let’s Encrypt自动签发)
  • 避免混合架构部署(如同时存在ARM/X86节点)
  • 定期清理ETCD历史版本:etcdctl compact 10000

🔧 排错命令速查

# 查看部署日志
kubepi-cli logs deploy -n kubepi-system

# 重置异常节点
kubepi-cli node reset 192.168.1.101 --force

# 导出诊断包
kubepi-cli diagnose --output cluster-diag.zip