【问题标题】:How to find out what podcidr is assigned to each node by calico CNI in kubernetes如何通过 calico CNI 在 kubernetes 中找出每个节点分配了哪些 podcidr
【发布时间】:2021-03-25 20:17:20
【问题描述】:

在使用calico CNI时,有没有直接的命令来获取分配给每个节点的podcidr。

我正在寻找分配给每个节点的确切网络和网络掩码。我无法通过podCIDR valueprojectcalico.org/IPv4VXLANTunnelAddr 注释从kubectl get nodes 获取它。看起来注释也会根据 calico 使用的 VXLAN 或 IPIP 隧道而有所不同。

尝试通过 podCIDR 密钥从节点获取。得到以下输出。这不是分配给节点的网络。

kubectl get nodes -oyaml | grep -i podcidr -B 1
  spec:
    podCIDR: 192.168.0.0/24
    podCIDRs:
--
  spec:
    podCIDR: 192.168.2.0/24
    podCIDRs:

尝试通过 calico 注释获取它。能够找到网络,但网络掩码丢失。

kubectl get nodes -oyaml | grep -i ipv4vxlan
      projectcalico.org/IPv4VXLANTunnelAddr: 192.168.33.64
      projectcalico.org/IPv4VXLANTunnelAddr: 192.168.253.192

试图通过 calico pod 获取它。从 calico 日志中找到确切的网络和网络掩码,即 192.168.33.64/26

kubectl logs calico-node-h2s9w   -n calico-system | grep cidr
2020-12-14 06:54:50.783 [INFO][18] tunnel-ip-allocator/ipam.go 140:
Attempting to load block cidr=192.168.33.64/26 host="calico-master"

但我想避免查看每个节点上的 calico pod 日志。 有没有更好的方法通过单个命令找到分配给每个节点的 podcidr。

【问题讨论】:

    标签: kubernetes kubernetes-pod project-calico calico cni


    【解决方案1】:

    您可以使用etcdctl 了解分配给每个节点的子网块的详细信息。

    ETCDCTL_API=3 etcdctl ls /calico/ipam/v2/host/node1/ipv4/block/
    

    节点node1 的上述示例将给出如下所示的输出。

    /calico/ipam/v2/host/node1/ipv4/block/192.168.228.192-26
    

    【讨论】:

    • 谢谢。但我从那个印花布命令行得到以下信息。 calicoctl get ippools NAME CIDR SELECTOR default-ipv4-ippool 192.168.0.0/16 all() 我没有得到分配给集群每个节点的 cidr。
    • 谢谢。这也可以通过对 kube-apiserver 的任何 api 调用来获取吗?
    • 据我所知不认为这是可能的
    【解决方案2】:

    看起来 calico 添加了一个名为 ipamblocks 的 custom resource,它包含分配给每个集群节点的 podcidr。

    自定义资源的名称本身包含节点的 podcidr。

    kubectl get ipamblocks.crd.projectcalico.org 
    NAME               AGE
    10-42-123-0-26     89d
    10-42-187-192-26   89d
    

    获取准确的 podcidr 和 nodeip 的命令:

    kubectl get ipamblocks.crd.projectcalico.org -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.cidr}{'\t NodeIP: '}{.spec.affinity}{'\n'}"
    
    podNetwork: 10.42.123.0/26   NodeIP: host:<node1-ip>
    podNetwork: 10.42.187.192/26     NodeIP: host:<node2-ip>
    

    【讨论】:

      猜你喜欢
      • 2020-05-01
      • 2020-04-26
      • 2018-08-02
      • 2019-03-09
      • 1970-01-01
      • 2018-04-15
      • 2019-05-05
      • 1970-01-01
      • 2021-01-12
      相关资源
      最近更新 更多