
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Intel FlexRAN™软件参考栈是一种vRAN参考架构,展示了如何使用Intel® C++类库优化VDU软件实现,并利用Intel®高级矢量扩展512(Intel® AVX-512)指令集。其多线程设计使单个VDU软件实现能够扩展以满足多种部署场景需求,从单小型基站部署、优化的D-RAN部署到服务大量5G小区的C-RAN池化部署。作为软件实现,它还能够通过O-RAN 7.2x分裂从同一软件栈支持LTE、5G窄带和5G大规模MIMO部署。
自2022年起,Intel FlexRAN团队开始在Docker Hub发布Docker镜像,旨在让更多潜在用户能够轻松入门和使用。该Docker镜像包含二进制文件、运行时依赖库、配置文件和多个典型案例。
| 类别 | Icelake – SP具体配置 |
|---|---|
| 主板 | Intel Server Board M50CYP2SBSTD |
| CPU | 1x Intel® Xeon® Gold 6338N CPU @2.20 GHz |
| 内存 | 8x16GB DDR4 3200 MHz (Samsung) |
| 存储 | 960 Gb SSD M.2 SATA 6Gb/s |
| 机箱 | 2U机架式服务器机箱 |
| NIC1 | 1x Fortville NIC X722 Base-T(LoM to CPU-0) |
| NIC2 | 1× Fortville 40 Gbe Ethernet PCIe XL710-QDA2 Dual Port QSFP+ (PCIe Add-in-card direct to CPU-0) |
| 基带设备 | 挂载Bryce Card (acc100)至CPU-0, 可选,若无则使用纯软件模式 |
| 类别 | 组件 | 详细信息 |
|---|---|---|
| 固件 | IFWI | 包含BIOS、BMC、ME及FRUSDR |
| Fortville XL710 | 8.20 0x8000a051 1.2879.0 | |
| 操作系统 | Ubuntu 22.04 | Ubuntu Server 22.04 实时内核5.15.0-1009 |
| 驱动 | x700系列i40e驱动 | 使用rt-5.15.0自带版本 |
| 云原生组件 | kubernetes | 1.22.1 |
| 容器运行时 | Docker 0.19.0 | |
| FlexRAN | FlexRAN 22.07包 | 22.07 |
| 工具链 | Intel oneAPI Base Toolkit | 2022.1.2.146 |
| DPDK | DPDK发行版 | 22.11 |
4.3.1 BIOS配置
以下是BIOS的主要配置项(不同服务器或BIOS版本可能存在差异,仅供参考):
| 类别 | 项目 | 设置值 |
|---|---|---|
| 处理器配置 | 超线程(Hyper-Threading) | 启用(enable) |
| LLC预取(LLC prefetch) | 启用(enable) | |
| 扩展APIC(Extended APIC) | 启用(enable) | |
| CPU P-state控制 | 启动性能模式(Boot Performance Mode) | 最大性能(Max. Performance) |
| 节能 Turbo(Energy Efficient Turbo) | 禁用(Disable) | |
| GPSS计时器(GPSS timer) | 0us | |
| Turbo模式(Turbo Mode) | 启用(enable) | |
| 硬件PM状态控制 | HW P-state | 禁用(disable) |
| EPP启用(EPP enable) | 禁用(disable) | |
| CPU C-state控制 | 启用Monitor Mwait(Enable Monitor Mwait) | 启用(enable) |
| 处理器C6/CPU C6报告(ProcessorC6/CPU C6 report) | 启用(enable) | |
| 增强暂停状态(Enhanced Halt State(C1E)) | 禁用(disable) | |
| 封装C-state控制 | 封装C状态(Package C State) | C0/C1 |
| Intel VT-d | Intel VT-d | 启用(enable) |
4.3.2 实时内核配置
安装TuneD:
shell$ apt install tuned $ ln -s /boot/grub/grub.cfg /etc/grub2.cfg $ vim /etc/grub.d/00_tuned
在文件末尾添加以下行:
shellecho "export tuned_params"
编辑/etc/tuned/realtime-variables.conf添加隔离核心:
shellisolated_cores=1-27,29-55
编辑/usr/lib/tuned/realtime/tuned.conf添加nohz和rcu相关参数:
shellcmdline_realtime=+isolcpus=${managed_irq}${isolated_cores} intel_pstate=disable nosoftlockup tsc=nowatchdog nohz=on nohz_full=${isolated_cores} rcu_nocbs=${isolated_cores}
激活实时配置文件:
shell$ tuned-adm profile realtime
检查tuned参数:
shell$ grep tuned_params= /boot/grub/grub.cfg set tuned_params="skew_tick=1 isolcpus=1-27,29-55 intel_pstate=disable nosoftlockup tsc=nowatchdog nohz=on nohz_full=1-27,29-55 rcu_nocbs=1-27,29-55 rcu_nocb_poll"
在/etc/default/grub中添加其他参数:
shellGRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 crashkernel=auto softlockup_panic=0 audit=0 cgroup_disable=memory mce=off hugepagesz=1G hugepages=60 hugepagesz=2M hugepages=0 default_hugepagesz=1G kthread_cpus=0,28 irqaffinity=0,28 "
应用更改并重启:
shell$ sudo update-grub $ sudo reboot
重启后检查内核参数:
shell$ cat /proc/cmdline BOOT_IMAGE=/vmlinuz-5.15.0-1009-realtime root=/dev/mapper/ubuntu--vg-ubuntu--lv ro intel_iommu=on iommu=pt usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 crashkernel=auto softlockup_panic=0 audit=0 cgroup_disable=memory mce=off hugepagesz=1G hugepages=60 hugepagesz=2M hugepages=0 default_hugepagesz=1G kthread_cpus=0,28 irqaffinity=0,28 skew_tick=1 isolcpus=1-27,29-55 intel_pstate=disable nosoftlockup tsc=nowatchdog nohz=on nohz_full=1-27,29-55 rcu_nocbs=1-27,29-55 rcu_nocb_poll
4.3.3 配置CPU频率和C状态
进一步提高确定性和能效:
shell$ apt install msr-tools $ cpupower frequency-set -g performance
设置CPU核心频率为2.5GHz:
shell$ wrmsr -a 0x199 0x1900
设置CPU uncore为最大允许值,禁用C6和C1E:
shell$ wrmsr -p a 0x620 0x1e1e $ cpupower idle-set -d 3 $ cpupower idle-set -d 2
4.3.4 Kubernetes和Docker安装
确保安装特定版本的Kubernetes和Docker,通常使用kubeadm安装和初始化Kubernetes,步骤参考:<[***]>
4.3.4.1 配置操作系统
shell$ swapoff -a
4.3.4.2 安装Docker
shell$ apt-get install -y ca-certificates curl gnupg lsb-release $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ apt-get update -y $ apt-get install -y docker-ce=5:20.10.13~3-0~ubuntu-jammy docker-ce-cli=5:20.10.13~3-0~ubuntu-jammy containerd.io $ mkdir /etc/docker $ cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF $ systemctl enable docker $ systemctl daemon-reload $ systemctl restart docker
4.3.4.3 通过kubeadm安装Kubernetes
shell$ curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg $ echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" \ | sudo tee /etc/apt/sources.list.d/kubernetes.list $ apt update $ apt install -y kubectl=1.21.2-00 kubeadm=1.21.2-00 kubelet=1.21.2-00 --allow-downgrades $ systemctl enable --now kubelet $ systemctl start kubelet # 注意:如果首次运行enable命令时报告"containerd.io: command not found"或"Failed to start kubele.service: Unit kubele.service not found",需重新执行"apt install -y kubectl=1.21.2-00 kubeadm=1.21.2-00 kubelet=1.21.2-00 --allow-downgrades" $ cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF $ sysctl --system
4.3.4.4 配置Docker和Kubernetes使用代理
在~/bashrc中添加环境变量:
shell$ export http_proxy=<proxy_url> $ export https_proxy=<proxy_url> $ export no_proxy=localhost,127.0.0.1,10.244.0.0/16,10.96.0.0/12,<host_ip>
为Docker配置代理(添加到/etc/systemd/system/docker.service.d/http-proxy.conf):
shell[Service] Environment="HTTP_PROXY=<proxy_url>" [Service] Environment="HTTPS_PROXY=<proxy_url>"
重启Docker:
shell$ systemctl daemon-reload $ systemctl restart docker
4.3.4.5 Kubernetes初始化
初始化Kubernetes集群(主节点):
shell$ kubeadm init --kubernetes-version=v1.21.11 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<host_ip> --token-ttl 0 --ignore-preflight-errors=SystemVerification $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config $ export KUBECONFIG=/etc/kubernetes/admin.conf
加入工作节点到集群:
shell$ kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
若工作节点与主节点为同一服务器,忽略上述加入步骤,执行以下命令消除污点:
shell$ kubectl taint nodes --all node-role.kubernetes.io/master-
除Kubernetes和Docker外,还需安装以下插件(从主节点执行):
multus:参考GitHub文档 - https://github.com/intel/multus-cni
calico:参考官方文档 - <[***]>
SRIOV (CNI和网络设备插件):参考GitHub文档 - https://github.com/intel/sriov-network-deviceplugin
SRIOV DP配置示例:
shell$ cd sriov-network-device-plugin $ cat <<EOF > deployments/configMap.yaml apiVersion: v1 kind: ConfigMap metadata: name: sriovdp-config namespace: kube-system data: config.json: | { "resourceList": [ { "resourceName": "intel_fec_5g", "deviceType": "accelerator", "selectors": { "vendors": ["8086"], "devices": ["0d5d"] } }, { "resourceName": "intel_sriov_odu", "selectors": { "vendors": ["8086"], "devices": ["154c"], "drivers": ["vfio-pci"], "pfNames": ["ens9f1"] } }, { "resourceName": "intel_sriov_oru", "selectors": { "vendors": ["8086"], "devices": ["154c"], "drivers": ["vfio-pci"], "pfNames": ["ens9f0"] } } ] } EOF $ kubectl create -f deployments/configMap.yaml $ kubectl create -f deployments/k8s-v1.16/sriovdp-daemonset.yaml $ kubectl get node <your-k8s-worker> -o json | jq '.status.allocatable'
4.5.1 DPDK安装
下载DPDK:
shell$ cd /opt
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务