举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > kubernetes网络插件 Kubernetes CNI插件相关错误故障排除

kubernetes网络插件 Kubernetes CNI插件相关错误故障排除

2023-05-26 07:20 Kubernetes(k8s)手册

kubernetes网络插件 Kubernetes CNI插件相关错误故障排除

kubernetes网络插件 Kubernetes CNI插件相关错误故障排除

kubernetes网络插件

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 地址范围。


阅读全文
以上是名动网为你收集整理的kubernetes网络插件 Kubernetes CNI插件相关错误故障排除全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • webpack -d Webpack AMD规范

    webpack -d Webpack AMD规范

    2023-05-05 Webpack中文指南

    AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条...

  • maven 快照 Apache Maven 快照

    maven 快照 Apache Maven 快照

    2023-05-13 Maven教程

    大型软件应用程序通常由多个模块组成,这是多个团队工作于同一应用程序的不同模块的常见场景。例如一个团队工作负责应用程序的前...

  • gradle官方文档 Gradle 标准的 Gradle 插件

    gradle官方文档 Gradle 标准的 Gradle 插件

    2023-05-26 Gradle教程

    Gradle 的发行包中有大量的插件。如下列所示:语言插件这些插件添加了让各种语言可以被编译和在 JVM 执行的支持。语言插件插件 I...

  • ant 编译 Ant 编译项目

    ant 编译 Ant 编译项目

    2023-04-29 ApacheAnt教程

    现在我们已经学习了 Ant 的数据类型,是时候在实际过程中运用所学知识了。在这一章节中,我们将会构建一个项目。这一章节的目的...

  • svn定义 SVN 基本概念

    svn定义 SVN 基本概念

    2023-04-02 SVN教程

    什么是版本控制系统(VCS)版本控制系统 (VCS) 是一个软件,帮助软件开发人员团队工作并维持他们完整的工作历史。下面是版本控制系...

© 2024 名动网 mdwl.vip 版权所有 联系我们