讲师中心 微信公众号
AI工具推荐 视频效率加速

基于多网卡物理机安装Kubernetes时的网卡绑定选择

风浩君_7203

风浩君_7203

发布时间:2026-09-02 08:11:25

|

400人浏览过

|

来源于php中文网

原创

Calico在多网卡节点上默认first-found策略几乎必然选错网卡,因其依赖内核驱动加载顺序;可靠配置应使用interface=ens33或cidr=172.16.15.0/24,避免使用first-found。

基于多网卡物理机安装kubernetes时的网卡绑定选择

Calico 在多网卡节点上默认会选错网卡,不是“可能”,而是几乎必然——它用 first-found 策略遍历接口,顺序由内核驱动加载时间决定,每次重启都可能变。你看到 Pod 间通信时断时续、tunl0 隧道走不通、BGP 对等体反复断连,八成是这个原因。

calico-node 的 IP_AUTODETECTION_METHOD 怎么设才可靠

关键不在“能不能设”,而在“设什么值才不翻车”。Calico 提供了四种检测方式,但只有两个真正可控:

  • interface=ens33:硬指定网卡名,最直接。但前提是所有节点网卡命名一致(比如都用 ens33),否则要配合 NodeLabel + DaemonSet patch 分开管理
  • cidr=172.16.15.0/24:按 CIDR 匹配,推荐用于生产。它会扫描所有接口的 IP,选第一个落在该子网内的地址,和网卡名解耦,适配不同厂商命名习惯(eth0 / enp0s3 / ens1f0 都能识别)
  • can-reach=10.10.10.1:探测可达性,适合跨机房或带跳数的场景,但依赖目标地址始终在线,CI/CD 测试环境容易误判
  • first-found:别用。文档里写着“for testing only”,但很多人上线还留着它

设置方式统一加在 calico-node DaemonSet 的环境变量里:

env:
- name: IP_AUTODETECTION_METHOD
  value: "cidr=172.16.15.0/24"

kubelet 的 --node-ip 和 Calico 冲突吗

不冲突,但必须对齐。kubelet 的 --node-ip 只影响 API Server 记录的 Node.Status.Addresses[0].address,而 Calico 默认会读这个字段作为自己的节点 IP —— 除非你显式设置了 IP_AUTODETECTION_METHOD。

Kubernetes Network Policy Generator
Kubernetes Network Policy Generator

使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

下载

常见错误是:kubelet 指定了 --node-ip=172.16.15.12,但 Calico 还在用 first-found,结果选了另一张网卡上的 192.168.1.100,导致 BGP 建连失败或路由下一跳错乱。

正确做法是两者统一指向业务网段:

  • 修改 /var/lib/kubelet/config.yaml 或 systemd service 文件,确保 nodeIP: 172.16.15.12
  • 同时在 calico-node 中设置 IP_AUTODETECTION_METHOD=cidr=172.16.15.0/24
  • 验证:kubectl get node <node> -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}' 和 kubectl exec -it -n kube-system calico-node-xxxxx -- ip addr show tunl0 | grep 'inet ' 应该返回同一网段 IP

为什么改完配置后 calico-node 还没生效

因为 calico-node Pod 不会自动 reload 环境变量——它只在启动时读一次。你改了 DaemonSet,必须强制滚动更新:

  • 先删掉旧 Pod:kubectl delete pod -n kube-system -l k8s-app=calico-node
  • 或者加个无害 annotation 触发重建:kubectl patch ds calico-node -n kube-system -p '{"spec":{"template":{"metadata":{"annotations":{"timestamp":"'"$(date +%s)"'"}}}}}'
  • 检查日志确认新策略被识别:kubectl logs -n kube-system -l k8s-app=calico-node | grep "Using autodetection method",应输出类似 Using autodetection method: cidr=172.16.15.0/24

最容易忽略的是:某些发行版(如 RHEL/CentOS)的 calicoctl 版本太老,calicoctl get nodes -o wide 显示的 IP 仍是旧值,这不是配置没生效,而是缓存未刷新;以 tunl0 接口 IP 和 BGP peer 状态为准。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

116

2025.12.22

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

188

2026.06.29

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

20

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

0

2026.10.10

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

20

2026.10.10

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

20

2026.10.10

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

20

2026.10.10

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn