You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes集群中检测CNI的类型与版本

Kubernetes集群查询当前使用CNI插件类型及版本的实操方法

不存在适配所有集群环境的单条万能kubectl命令,但可以通过以下几类运维常用的操作快速定位信息,不需要登录节点也能完成查询:

  • 方法1:查kube-system命名空间下的工作负载
    绝大多数自建CNI插件都会以DaemonSet形式部署在kube-system命名空间,直接执行命令列出该命名空间下所有Pod:
    kubectl get pods -n kube-system
    输出结果里如果出现带calico、flannel、cilium、canal、kube-ovn、terway这类关键词的Pod,前缀对应的就是当前使用的CNI类型。
    要查具体版本的话,直接看对应Pod的镜像标签即可,比如执行kubectl describe pod <cni对应Pod名称> -n kube-system | grep Image:,镜像名冒号后面的tag就是插件版本。如果是Cilium这类自带CLI的插件,还可以直接执行kubectl exec -n kube-system <cilium-agent Pod名> -- cilium version拿到精确版本信息。
  • 方法2:查CNI生效配置
    Kubernetes节点默认会把生效的CNI配置存放在/etc/cni/net.d/目录下,该目录下文件名排序最靠前的.conf/.conflist文件就是当前加载的CNI配置。不想登录节点的话,可以先找集群中挂载了这个主机目录的Pod,进入Pod内部读取配置文件即可。
    另外部分集群会把CNI配置存为kube-system下的ConfigMap,可以执行kubectl get configmap -n kube-system | grep -i cni搜索相关配置资源,找到后直接查看内容即可。
  • 方法3:kubeadm部署集群的快速查询
    如果集群是通过kubeadm初始化部署的,可以直接查询kubeadm的集群配置ConfigMap:
    kubectl get configmap kubeadm-config -n kube-system -o yaml
    查看配置中networking字段的相关信息可以辅助判断CNI类型,比如默认Flannel的Pod网段是10.244.0.0/16,Calico默认网段是192.168.0.0/16,不过网段支持自定义,建议和前面查到的Pod信息交叉验证避免误判。

注意:如果是云厂商托管的Kubernetes集群,部分云厂商的托管CNI组件不会暴露在kube-system的Pod列表中,这种情况可以通过查询节点kubelet参数辅助判断,执行kubectl get nodes -o yaml | grep network-plugin即可看到kubelet配置的网络插件类型,版本信息可以对应云厂商集群版本的默认组件配置匹配。

内容的提问来源于stack exchange,提问作者YoMar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:27:25