KubePi实战部署

🚀 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