Cloudpods 开源混合云管理系统部署指南

  适用场景: 快速在多台服务器/虚拟机上搭建 KVM 私有云及多云纳管平台
  技术栈: Cloudpods  v3.11.12 + Ubuntu 22.04 LTS
  文档说明: 本文整理自官方文档并结合实战踩坑经验,旨在提供一份可长期复用的标准化部署流程
一、系统简介

  Cloudpods 是一款开源的混合云管理平台,支持统一纳管多种公有云和私有云资源,提供虚拟机、容器、存储、网络等一体化管理能力。

项目地址:

  • 官网:https://www.cloudpods.org/
  • GitHub:https://github.com/yunionio/cloudpods

支持的私有云/虚拟化: VMware、OpenStack、Proxmox VE (PVE) ,等以及 Cloudpods 自身。


二、整体部署架构建议
、 环境准备
(1)注意事项:
  • 操作系统 Ubuntu 22.04 LTS 需为干净版本,支持多个Linux发行版,可自行查看。
  • 最低配置要求:CPU 8核、内存 8GiB、存储 200GiB。
  • 建议为 /opt 单独设置挂载点,虚拟机和服务存储默认使用该目录。

(2)角色划分:
角色 说明
管理节点(Mgmt) 控制面 + k3s + Web UI
计算节点(Node) 运行 KVM 虚拟机
2 配置主机名与 hosts 及ip规划(可选)
(1)设置主机名(每台节点执行):
hostnamectl set-hostname cloud-mgmt-20-24
hostnamectl set-hostname cloud-node1-20-71
hostnamectl set-hostname cloud-node2-20-21
hostnamectl set-hostname cloud-node3-20-43
(2)统一 hosts 配置(所有节点执行)
cat >> /etc/hosts <<EOF
192.168.20.24 cloud-mgmt-20-24
192.168.20.71 cloud-node1-20-71
192.168.20.21 cloud-node2-20-21
192.168.20.43 cloud-node3-20-43
EOF
(3)强烈建议(避免宿主机注册失败):
  • 不要混用 /23/24 等不同掩码。
  • 使用静态ip地址,所有节点掩码、网关一致。

3、 配置静态 IP(可选)
(1)禁用 cloud-init 网络配置:
cat > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg <<EOF
network: {config: disabled}
EOF
(2)配置 netplan(假设网卡为 ens160):
sudo tee /etc/netplan/01-static.yaml > /dev/null <<'EOF'
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
      dhcp4: false
      addresses:
        - 192.168.20.21/23
      routes:
        - to: default
          via: 192.168.20.1
      nameservers:
        search: []
        addresses:
          - 114.114.114.114
          - 8.8.8.8
EOF
(3) 应用配置:
mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
chmod 600 /etc/netplan/01-static.yaml
netplan apply
三、部署 Cloudpods管理端(All in one)
1、 下载 Ocboot 部署工具
wget https://github.com/yunionio/ocboot/archive/refs/tags/master-v3.11.12-6.tar.gz
tar xf master-v3.11.12-6.tar.gz
cd ocboot-master-v3.11.12-6
2、 运行部署工具
./ocboot.sh run.py virt 192.168.20.24
# 其中 192.168.20.24 为管理节点的 IP 地址。
说明:
  • 脚本会自动安装 k3s。
  • 默认从阿里云镜像仓库拉取镜像。
  • 耗时 30~60 分钟属于正常。
  • 失败可以重复执行脚本,支持断点恢复。

3、 查看部署状态
# 查看 Pod 状态
kubectl get pods -n onecloud -w

# 查看已注册的 Host
climc host-list
4、 部署成功提示
Initialized successfully!
Web page: https://192.168.20.24
User: admin
Password: admin@123

首次登录后修改密码,并根据业务需求配置存储、网络及计算资源。

四、添加计算节点
1、 环境要求
  • 操作系统 Ubuntu 22.04 LTS 干净,未安装 K8s/容器相关组件。
  • 最低配置:8核心、8GB内存、200GB硬盘。
  • 建议为 /opt 单独挂载。
2、 添加节点步骤(在管理端执行)
(1)确认 SSH 配置(在计算节点):

确保 /etc/ssh/sshd_config 包含:

PermitRootLogin yes
PubkeyAuthentication yes
(2) 配置免密登录(从管理端):
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.20.21
ssh root@192.168.20.21 "hostname"
(3)执行添加计算节点(从管理端):
./ocboot.sh add-node 192.168.20.24 192.168.20.21
预计半小时左右,安装完成后登录控制台查看“宿主机”并“启用”节点。



五、创建虚拟机
创建虚拟机之前,需要提前创建好IP子网,上传虚拟机镜像,启用宿主机等操作。
1、通过前端创建
在 主机 菜单,选择 虚拟机,选择 新建。在此界面输入主机名,选择镜像和IP子网,创建虚拟机。

2、虚拟机管理

更多见文档 https://www.cloudpods.org/docs/onpremise/guides/vminstance/create

六、节点管理与故障排查
1、 管理端查看节点状态
# 查看所有 Host Pod
kubectl -n onecloud get pod | grep default-host

# 查看主机列表
climc host-list
2、 Host 服务说明

  Host 服务由 K8s 的 onecloud 命名空间下的 DaemonSet default-host 定义,每个节点运行一个 default-host-xxxxx 容器,包含三个容器:

容器名称 功能说明
host 主服务进程,负责与控制器通信、管理虚拟机、存储和网络
ovn-controller OVN 控制进程,同步网络配置到本地 OVS
sdnagent 实现安全组、流控及 VPC 网络功能
3、 常用排查命令
# 查看所有 Host Pod
kubectl -n onecloud get pod | grep default-host

# 根据 IP 查找特定 Host Pod
kubectl -n onecloud get pods -o wide | grep 192.168.20.21

# 重启 Host 服务(删除 Pod 会自动重建)
kubectl -n onecloud delete pod <default-host-xxxxx>

# 查看 Host 主容器日志
kubectl -n onecloud logs <default-host-xxxxx> -c host --since 10m -f

七、常见踩坑总结
  1. 掩码不一致(如 /23 vs /24) → 直接注册失败,宿主机不上线。
  2. 系统不干净 → k3s / containerd 冲突。
  3. /opt 未单独挂载 → 磁盘很快爆满。
  4. cloud-init 未禁用 → 重启后 IP 丢失或改变。
  5. 管理端 network 已存在但不匹配 → 出现 find_matched == false 错误。

结论: 一次性规划好 IP、主机名、掩码,使用干净系统 + 静态 IP + 统一网段,Cloudpods 安装成功率接近 100%。