如何查询Kubernetes集群Calico CNI配置的VXLAN VNI与端口号
查询Calico VXLAN VNI与端口号的方法
1. 使用kubectl命令直接查询
Calico的VXLAN相关配置存储在其自定义CRD资源中,无需抓包即可直接读取:
- 查询全局默认配置
执行如下命令读取默认Felix配置资源,直接获取全局生效的VXLAN参数:
默认输出为:kubectl get felixconfigurations default -o jsonpath='VNI: {.spec.vxlanVNI}{"\n"}端口号: {.spec.vxlanPort}{"\n"}'VNI: 4096 端口号: 4789 - 查询独立IPPool的专属配置
如果你为特定IPPool单独配置了VXLAN参数,执行如下命令查看所有IPPool的VXLAN配置:
注意:IPPool单独配置的参数优先级高于全局Felix配置。kubectl get ippools -o custom-columns='NAME:.metadata.name,VNI:.spec.vxlanVNI,PORT:.spec.vxlanPort'
2. 客户端调用实现
Calico的配置资源均属于crd.projectcalico.org API组下的标准CRD资源,可通过任意K8s客户端直接调用API获取:
- 权限要求:客户端使用的ServiceAccount需要具备
felixconfigurations和ippools资源的get、list权限 - Python客户端:使用官方kubernetes库的
CustomObjectsApi接口,调用get_cluster_custom_object方法,指定group为crd.projectcalico.org、version为v1、plural为felixconfigurations、name为default即可获取结构化的配置数据,直接读取对应字段即可 - Go客户端:可直接引入Calico官方client-go库,调用
FelixConfigurations().Get()或IPPools().List()方法获取结构化配置,无需手动解析JSON
内容的提问来源于stack exchange,提问作者Ahamed
相关产品推荐
相关产品推荐

