update files
BeeQoS 是一个面向 Kubernetes 集群的 自适应网络资源管控 Agent 框架,基于 eBPF Hook + 用户态 Agent 实现,旨在无缝融入 openEuler 开源生态
本仓库包含:
kubeadm
containerd
⚠️ 重要说明 本仓库中的若干脚本和配置文件 显式依赖网卡名和节点 IP。 在运行任何 .sh 脚本前,请根据你的实验环境 修改对应 IP / 网卡名称。
.sh
在控制节点执行:
sudo kubeadm reset -f \ --cri-socket unix:///var/run/containerd/containerd.sock sudo kubeadm init \ --control-plane-endpoint=<MASTER_IP> \ --pod-network-cidr=10.244.0.0/12 \ --image-repository registry.aliyuncs.com/google_containers \ --cri-socket unix:///var/run/containerd/containerd.sock \ -v=10
配置 kubectl:
kubectl
mkdir -p $HOME/.kube sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
若遇到 kubeconfig verification error,可执行:
sudo kubeadm init phase kubeconfig admin sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
git clone https://github.com/derekwin/demo-cli.git bwm cd bwm git checkout -b bwm origin/dhc-elf cd ..
编辑以下文件(示例中使用 eno2):
eno2
bwm/cmd/alg-daemon/main.go
将自动探测改为固定网卡名:
HostNICName, err := "eno2", nil
可恢复为自动探测(非实验环境):
HostNICName, err := common.GetMasterIntf()
cd bwm make all cd ..
修改 distribute_bwm.sh:
distribute_bwm.sh
然后执行:
bash distribute_bwm.sh
cd calico/v327
中国大陆用户:
修改 calico.yaml:
calico.yaml
CALICO_IPV4POOL_IPIP
执行:
bash setup_calico.sh
cd bwm/install/kubernetes kubectl apply -f oncn-bwm.yaml cd -
配置 BeeQoS 为 Calico 的带宽管理插件:
bash setup_beeqos_after_calico.sh
⚠️ 注意 Cilium 与 BeeQoS / Calico 冲突。 为保证实验一致性,建议直接重建集群。
kubectl delete -f bwm/install/kubernetes/oncn-bwm.yaml kubectl delete -f calico/v327/calico.yaml
参考官方文档(Bandwidth Manager):
https://docs.cilium.io/en/latest/network/kubernetes/bandwidth-manager/
cilium install --version 1.18.1
启用带宽管理:
helm upgrade cilium ./cilium \ --version 1.18.1 \ --namespace kube-system \ --reuse-values \ --set bandwidthManager.enabled=true
重启:
kubectl -n kube-system rollout restart ds/cilium
exm1 – exm4:测试中使用的实验
exm1
exm4
每个目录包含:
kubectl -n kube-system get pods kubectl -n kube-system exec -it <cilium-pod> -- cilium-dbg status | grep BandwidthManager
sudo ip link set ens61f0np0 down sudo ip link set ens61f1np1 down sudo ip link set enp129s0np0 down
kubectl delete pod -n kube-system -l k8s-app=kube-dns
bwm/
calico/
exm*/
setup_*.sh
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
BeeQoS
BeeQoS 是一个面向 Kubernetes 集群的 自适应网络资源管控 Agent 框架,基于 eBPF Hook + 用户态 Agent 实现,旨在无缝融入 openEuler 开源生态
本仓库包含:
1. 实验环境与前提条件
1.1 硬件与系统要求
1.2 软件依赖
kubeadm部署)containerd2. 使用 kubeadm 创建 Kubernetes 集群
在控制节点执行:
配置
kubectl:常见问题
若遇到 kubeconfig verification error,可执行:
3. BeeQoS Agent 框架编译与镜像分发
3.1 获取源码并切换分支
3.2 指定实验使用的物理网卡
编辑以下文件(示例中使用
eno2):将自动探测改为固定网卡名:
3.3 编译与镜像分发
修改
distribute_bwm.sh:然后执行:
4. 安装 Calico + BeeQoS(主实验路径)
4.1 安装 Calico(v3.27)
中国大陆用户:
修改
calico.yaml:CALICO_IPV4POOL_IPIP执行:
4.2 安装 BeeQoS
配置 BeeQoS 为 Calico 的带宽管理插件:
5. 安装 Cilium(对照实验)
5.1 卸载 BeeQoS 与 Calico
5.2 安装 Cilium(v1.18.1)
参考官方文档(Bandwidth Manager):
启用带宽管理:
重启:
6. 实验与结果复现
exm1–exm4:测试中使用的实验每个目录包含:
7. 常用调试命令
禁用无关网卡(减少实验干扰)
DNS 异常处理
8. code结构概览
bwm/:BeeQoS 核心 Agent 实现(底层 eBPF Hooks / TC / 用户态 Agent Daemon)calico/:Calico 配置exm*/:测试实验setup_*.sh:环境配置脚本