整合了 boc-init(部署机初始化)和 boc-deploy(平台部署)功能,提供从环境准备到部署验证的完整工作流。
参数说明必填示例deploy_pkg_dir部署包和校验文件所在目录是/optdeploy_pkg_file部署包文件名是BOC.tar.gzssh_host部署机IP是10.50.6.181ssh_portSSH端口否22ssh_userSSH用户名是rootssh_passwordSSH密码是Password
参数说明必填示例ci_ipCI节点IP是10.50.6.182node_ipsBOC节点IP列表(逗号分隔)是10.50.6.183,10.50.6.184,10.50.6.185master_vipK8s Master VIP是10.50.6.186cni_typeCNI类型否ipip (默认) 或 bgpk8s_versionKubernetes版本否1.33.1 (默认)
角色说明deploy_server部署机pipelineCI节点chartmuseumChart仓库docker_registryDocker镜像仓库nfs_serverNFS存储masterK8s master节点etcdetcd节点db数据库节点nodeK8s worker节点
连接部署机并检查:
执行 SHA256 校验:
bash
nohup cd <deploy_pkg_dir> && sha256sum <deploy_pkg_file>.sha256 > /tmp/sha256sum-<deploy_pkg_file>.txt
定期检查校验结果
bash
cat /tmp/sha256sum-<deploy_pkg_file>.txt
判断标准: 结果中有 "<deploy_pkg_file>: 成功"
重要:解压前需先清理旧目录,避免残留文件导致问题:
bash
# 解压前先清理旧目录
cd <deploy_pkg_dir>
test -d BOC_k8s_noarch && rm -rf BOC_k8s_noarch
# 后台执行解压(30GB文件预计15-20分钟)
nohup tar -xzf <deploy_pkg_file> > /tmp/unpack.log 2>&1 &
# 定期检查解压,通过进程判断
## 1 检查是否有以下进程,有就代表还在解压
ps aux |grep 'tar -xzf <deploy_pkg_file>'
## 2 没有就再检查/opt/BOC_k8s_noarch 占用空间正常应该在 31GB
du -sh /opt/BOC_k8s_noarch
解压后的正确目录结构:
text
/opt/BOC_k8s_noarch/
├── bocctl # 主程序
├── bocctl_lib # 库文件
├── images # 镜像文件
├── packages # 安装包
├── playbooks # Ansible playbook
后台执行初始化(预计15-20分钟):
bash
cd <deploy_dir>
nohup ./bocctl init > /tmp/bocctl_init.log 2>&1 &
# 定期检查bocctl 进程是否存在,如存在代表init 还在进行
# 也一块检查执行日志
ps aux |grep bocctl
tail -n 20 /opt/BOC_k8s_noarch/log/bocctl.log
判断标准:使用 nerdctl ps 检查以下两个容器是否正常运行:
bash
nerdctl -n k8s.io ps | grep -E "(yum_registry|bocloud_deploy_registry)"
预期输出应包含:
yum_registry 容器 - 运行中bocloud_deploy_registry_k8s 容器 - 运行中验证方法如上,确保容器正常运行后再继续。
根据输入参数生成 config.yaml,包含:
配置文件示例:
高可用部署示例文件: /opt/BOC_k8s_noarch/playbooks/examples/config/install_portal_HA.yaml ALLINONE 部署示例文件: /opt/BOC_k8s_noarch/playbooks/examples/config/install_portal_allinone.yaml
将生成的 config.yaml 上传到部署机的 /root/config.yaml
bash
cd /opt/BOC_k8s_noarch
nohup ./bocctl run -a install -c /root/config.yaml > log/bocctl.log 2>&1 &
部署过程约 40-60 分钟。
每5分钟检查一次进度:
bash
# 检查进程数
ps aux | grep -E "bocctl|ansible" | grep -v grep | wc -l
# 查看日志
tail -100 /opt/BOC_k8s_noarch/log/bocctl.log
直接连接 master 节点验证
bash
# 从本机直接连接 master 节点
ssh root@<master节点IP>
# 检查节点状态
kubectl get nodes
# 检查 Pod 状态
kubectl get pods -A
预期结果:
ReadyRunning使用浏览器访问:
text
http://<master_vip>:30001
常用服务端口:
服务地址BOC Portalhttp://<master_vip>:30001K8s API Serverhttps://<master_vip>:6443Grafanahttp://<master_vip>:30902Prometheushttp://<master_vip>:30909
text
请使用 boc-deploy-tool 部署 BOC容器平台:
初始化参数:
- 部署包目录:/opt
- 部署包文件:BOC.tar.gz
- 部署机IP:10.50.6.181
- SSH端口:22
- SSH用户:root
- SSH密码:password
部署参数:
- CI节点IP:10.50.6.182
- BOC节点IP:10.50.6.183,10.50.6.184,10.50.6.185
- VIP:10.50.6.186
- CNI类型:ipip
- K8s版本:1.33.1
如果部署机已完成初始化,只需提供部署参数即可。
本地执行前置条件:
SSH 连接问题解决:
pip install sshpass -g 安装确保所有节点间网络互通
部署过程耗时较长,建议后台运行
部署完成后验证所有 Pod 状态
如果无法从部署机 SSH 到 master 节点,可以从本机直接连接验证
A: 重新执行解压,确保先删除旧目录
A: 检查是否有 yum 进程卡住,如有则杀掉后重试
A: 可能 SSH 互信未配置完成,直接从本机使用密码连接 master 节点验证
A: 检查具体 Pod 状态 kubectl describe pod <pod-name> -n <namespace>
A: 检查 kube-proxy 和 bocloud 组件是否正常运行