树叶云kubernetes教程:Kubernetes CNI插件相关错误故障排除

CNI 插件相关错误故障排除

为避免与 CNI 插件相关的错误,请确认您正在使用或升级到经过测试可与您的 Kubernetes 版本一起正常工作的容器运行时。

例如,以下容器运行时正在或已经为 Kubernetes v1.24 准备好:

  • containerd v1.6.4 及更高版本,v1.5.11 及更高版本
  • CRI-O v1.24.0 及更高版本

关于“CNI 版本不兼容”和“无法为沙盒销毁网络”错误

当 CNI 插件尚未升级和/或 CNI 配置版本未在 CNI 配置文件中声明时,在 containerd v1.6.0-v1.6.3 中存在 pod CNI 网络设置和拆除的服务问题。 containerd 团队报告说,“这些问题在 containerd v1.6.4 中得到解决。”

使用 containerd v1.6.0-v1.6.3,如果您不升级 CNI 插件和/或声明 CNI 配置版本,您可能会遇到以下“不兼容的 CNI 版本”或“无法为沙盒销毁网络”的错误情况。

CNI 版本不兼容错误

如果您的 CNI 插件版本与配置中的插件版本不正确匹配,因为配置版本晚于插件版本,则容器日志可能会在 pod 启动时显示类似于以下内容的错误消息:

incompatible CNI versions; config is \"1.0.0\", plugin supports [\"0.1.0\" \"0.2.0\" \"0.3.0\" \"0.3.1\" \"0.4.0\"]"

沙盒错误导致网络破坏失败

如果 CNI 插件配置中缺少插件的版本,则 pod 可能会运行。 但是,停止 pod 会产生类似于以下内容的错误:

ERRO[2022-04-26T00:43:24.518165483Z] StopPodSandbox for "b" failed
error="failed to destroy network for sandbox \"bbc85f891eaf060c5a879e27bba9b6b06450210161dfdecfbb2732959fb6500a\": invalid version \"\": the version is empty"

此错误使 pod 处于未就绪状态,但仍附加网络命名空间。 要从此问题中恢复,请编辑 CNI 配置文件以添加缺少的版本信息。 下一次停止 pod 的尝试应该会成功。

更新 CNI 插件和 CNI 配置文件

如果您使用 containerd v1.6.0-v1.6.3 并遇到“不兼容的 CNI 版本”或“无法为沙盒销毁网络”错误,请考虑更新您的 CNI 插件并编辑 CNI 配置文件。

以下是每个节点的典型步骤的概述:

  1. 安全地排空并封锁节点。
  2. 停止容器运行时和 kubelet 服务后,执行以下升级操作:
    • 如果您正在运行 CNI 插件,请将它们升级到最新版本。
    • 如果您使用的是非 CNI 插件,请将它们替换为 CNI 插件。 使用最新版本的插件。
    • 更新插件配置文件以指定或匹配插件支持的 CNI 规范版本,如以下“容器配置文件示例”部分所示。
    • 对于 ​containerd​,请确保您已安装 CNI 环回插件的最新版本(v1.0.0 或更高版本)。
    • 将节点组件(例如 kubelet)升级到 Kubernetes v1.24
    • 升级到或安装最新版本的容器运行时。
  3. 通过重新启动容器运行时和 kubelet 将节点带回集群。 取消封锁节点(​kubectl uncordon <nodename>​)。

一个示例容器配置文件

以下示例显示了 ​containerd ​运行时 v1.6.x 的配置,它支持最新版本的 CNI 规范 (v1.0.0)。

有关配置系统的更多说明,请参阅您的插件和网络提供商的文档。

在 Kubernetes 上,containerd 运行时将环回接口 ​lo ​作为默认行为添加到 pod。 containerd 运行时通过 CNI 插件 ​loopback ​配置环回接口。 ​loopback ​插件作为具有 cni 名称的 ​containerd ​发布包的一部分分发。 ​containerd ​v1.6.0 及更高版本包括与 CNI v1.0.0 兼容的环回插件以及其他默认 ​CNI ​插件。 loopback 插件的配置由 containerd 内部完成,并设置为使用 CNI v1.0.0。这也意味着当这个更新版本的 ​containerd ​启动时,​loopback ​插件的版本必须是 v1.0.0 或更高版本。

以下 bash 命令生成示例 CNI 配置。在这里,配置版本的 1.0.0 值分配给 ​cniVersion ​字段,以供 ​containerd ​调用 CNI 桥接插件时使用。

cat << EOF | tee /etc/cni/net.d/10-containerd-net.conflist
{
 "cniVersion": "1.0.0",
 "name": "containerd-net",
 "plugins": [
   {
     "type": "bridge",
     "bridge": "cni0",
     "isGateway": true,
     "ipMasq": true,
     "promiscMode": true,
     "ipam": {
       "type": "host-local",
       "ranges": [
         [{
           "subnet": "10.88.0.0/16"
         }],
         [{
           "subnet": "2001:db8:4860::/64"
         }]
       ],
       "routes": [
         { "dst": "0.0.0.0/0" },
         { "dst": "::/0" }
       ]
     }
   },
   {
     "type": "portmap",
     "capabilities": {"portMappings": true}
   }
 ]
}
EOF

使用基于您的用例和网络寻址计划的 IP 地址范围更新前面示例中的 IP 地址范围。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/166492.html<

(0)
管理的头像管理
上一篇2025-03-20 13:50
下一篇 2025-03-20 13:52

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注