---
title: openFuyao平台部署
description: "参考openFuyao社区安装指导(https://docs.openfuyao.cn/zh/docs/v25.12/installation_guide/installation_process.html)部署Cluster-API、Provider-BKE以及openFuyao管理面，部署完成后，用户可在openFuyao管理面上进行业务集群的安装、卸载、扩缩容、升级等操作。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaiagent/bestpractice/aiagent-0193.html
sourcePath: /source/zh/kunpengaiagent/bestpractice/aiagent-0193.html
indexId: 1001d26652be39d8b8dbd443f480f8e6c103e607b9e68b3a9bf193357f58f3b256
---
# openFuyao平台部署

参考openFuyao社区安装指导(https://docs.openfuyao.cn/zh/docs/v25.12/installation_guide/installation_process.html)部署Cluster-API、Provider-BKE以及openFuyao管理面，部署完成后，用户可在openFuyao管理面上进行业务集群的安装、卸载、扩缩容、升级等操作。

Cluster-API是K8s的子项目，通过声明式API和控制器模式实现了K8s集群的生命周期管理自动化，其核心介绍如下：

- 基础设施即代码：使用K8s自定义资源定义（CRD）集群配置。
- 声明式管理：通过YAML文件定义集群的期望状态。
- 控制器模式：自动协调实际状态与期望状态。

BKE工具将机器分为两种类型：

- 引导节点：部署轻量级的K3s作为长期引导集群，承载Cluster-API控制平面，负责创建和管理目标业务集群。
- 业务集群节点：部署由Cluster-API实际创建和管理的目标业务集群，用于运行用户工作负载，其生命周期由引导集群控制。

- 建议您的节点环境使用未安装任何Docker与K8s组件的裸机操作系统，以避免因版本冲突导致安装失败。如需在存量环境进行试验性安装，可下载孵化期工具  envCheck(https://docs.openfuyao.cn/zh/docs/v25.12/user_guide/cluster_installation_deployment/environment_pre_check_tool_guide.html)
进行环境检查，envCheck工具对环境中的残留文件和冲突应用程序进行检测，具体操作请参见  安装部署前置环境校验工具使用指导(https://docs.openfuyao.cn/zh/docs/v25.12/user_guide/cluster_installation_deployment/environment_pre_check_tool_guide.html)
。
- （可选）如需使用自定义CA证书来签发K8s集群内所有组件的证书，以满足企业级安全合规要求，请在引导节点创建之前配置自定义证书。具体操作请参见  自定义集群证书使用指导(https://docs.openfuyao.cn/zh/docs/v25.12/user_guide/cluster_installation_deployment/using_custom_cluster_certificates.html)
。


1. openFuyao Cluster-API部署流程如图1所示，可参考openFuyao社区安装指导(https://docs.openfuyao.cn/zh/docs/v25.12/installation_guide/installation_process.html)进行安装包完整性校验、引导集群安装、业务集群安装和离线组件增量安装等。建议采用在线方式安装引导集群，并通过管理面安装业务集群。
  图1 openFuyao Cluster-API部署流程

  引导节点需要安装tar工具。tar工具安装版本可参考https://mirrors.aliyun.com/gnu/tar/(https://mirrors.aliyun.com/gnu/tar/)。 禁用fstab的Swap分区。 sudo sed -i '/swap/s/^/#/g' /etc/fstab sudo mount -a sudo swapoff -a 在线安装引导集群时需要加上--enableNTP=false选项。 bke init --otherRepo cr.openfuyao.cn/openfuyao/bke-online-installed:1.0.5 --enableNTP=false 根分区磁盘使用率需低于85%，否则会导致openFuyao新建Pod失败。

2. 在线方式安装引导集群完成后，根据openFuyao社区安装指导(https://docs.openfuyao.cn/zh/docs/v25.12/installation_guide/installation_process.html)通过管理面安装业务集群。
3. 单击下方的“一键校验”，校验成功后，单击“创建”即可下发业务集群的创建任务。界面弹出“集群信息”窗口。待集群信息滚动完成后，返回集群列表界面，“状态”列显示为“安装中”，待“状态”列字段更新完毕，完成新增集群。若对应集群“状态”列字段为“健康”，代表新增成功。对应集群“状态”列字段为“安装失败”，代表新增失败。如果“集群日志”显示报错信息，需要进一步定位解决，可参考FAQ(https://gitcode.com/openFuyao/docs/blob/openFuyao-v25.12/docs/zh/appendixes/faq.md)相关内容进行处理。
4. 单节点业务集群安装完毕后，在引导节点机器上执行如下命令，进行Pod IP地址检查。多节点跳过此步骤。

```
cat > check_pods_ip.sh << 'EOF'
# 定义函数：判断IP是否属于子网
function is_ip_in_subnet() {
local ip="$1"
local subnet="$2"
local network_addr="${subnet%/*}"
local prefix_length="${subnet#*/}"
# 将IP地址转换为整数
ip_to_int() {
local ip="$1"
local a b c d
IFS=. read -r a b c d <<< "$ip"
echo $((a * 256 ** 3 + b * 256 ** 2 + c * 256 + d))
}
local ip_int=$(ip_to_int "$ip")
local network_int=$(ip_to_int "$network_addr")
local mask_int=$((0xffffffff << (32 - prefix_length) & 0xffffffff))
if (( (ip_int & mask_int) == network_int )); then
return 0  # 属于子网
else
return 1  # 不属于子网
fi
}
function reboot_pods() {
# 存在pod ip 分配错误问题，重启pod后可解决问题
# 如何确认正常的pod ip，在下面范围中的ip可认为是正常的ip
## 1、kubectl get node -A -owide 回显结果中的INTERNAL-IP字段
## 2、kubectl get ippool -n default-ipv4-ippool -oyaml 回显结果中spec/cidr的网络段
# 获取所有 Node 的 InternalIP
NODE_IPS=$(kubectl get nodes -o json | jq -r '.items[].status.addresses[] | select(.type=="InternalIP") | .address')
# 获取 Calico IPPool 的 CIDR 网段
CALICO_CIDR=$(kubectl get ippools.crd.projectcalico.org default-ipv4-ippool -o json | jq -r '.spec.cidr')
# 检查是否获取到 IPPool
if [ -z "$CALICO_CIDR" ]; then
echo "Calico IPPool not found!"
return
fi
# 遍历所有 Pod，检查 IP 是否合法
kubectl get pods -A -o json | jq -r '.items[] | select(.status.podIP != null) | "\(.metadata.namespace) \(.metadata.name) \(.status.podIP)"' | while read -r ns pod ip; do
# 检查 Pod IP 是否在 Node IP 列表里
if grep -q "$ip" <<< "$NODE_IPS"; then
echo "Pod $ns/$pod IP $ip is a Node IP, skipping..."
continue
fi
# 检查 Pod IP 是否在 Calico IPPool 网段
is_ip_in_subnet "$ip" "$CALICO_CIDR"
if [ $? -ne 0 ]; then
echo "Pod $ns/$pod IP $ip is outside Calico IPPool $CALICO_CIDR, restarting..."
kubectl delete pod -n "$ns" "$pod" --force --grace-period=0
else
echo "Pod $ns/$pod IP $ip is valid."
fi
done
}
reboot_pods
EOF
# 赋予执行权限
chmod +x check_pods_ip.sh
# 执行脚本
./check_pods_ip.sh
```


5. check_pods_ip.sh执行完成后，在终端执行如下命令，预期无Pod IP地址为10.4.0.x。

```
kubectl get pod -A -o wide
```


6. 业务集群安装成功后，即可登录业务集群的openFuyao管理面进行集群管理相关的操作。浏览器中输入“https://业务集群IP地址:31616”，首次登录时，用户名为admin，密码为test@1234，首次登录后需要修改用户名和密码。
  引导节点的管理面Web服务采用HTTPS协议，侦听端口为30010。初始登录用户名为admin，密码为test@1234。出于安全考虑，首次登录后必须立即修改默认密码。 业务集群节点的管理面Web服务采用HTTPS协议，侦听端口为31616。初始登录用户名为admin，密码为test@1234。出于安全考虑，首次登录后必须立即修改默认密码。 待安装集群节点与引导节点的时间偏差不超过10秒。

7. 修改“/var/lib/kubelet/config.yaml”文件，向其中添加maxPods字段修改Pods上限，除机密OpenClaw Pod外，有60 Pods为openFuyao以及记忆，E2B等必需的Pod，需要设置maxPods字段>=60+预期部署的OpenClaw实例数。

  a. 打开“/var/lib/kubelet/config.yaml”文件。

```
vim /var/lib/kubelet/config.yaml
```


  b. 按“i”进入编辑模式，添加maxPods字段并修改Pods上限为300。

```
maxPods: 300
```


  c. 按“Esc”键退出编辑模式，输入:wq!，按“Enter”键保存并退出文件。
  d. 重启服务。

```
systemctl restart kubelet
```
