【问题标题】:Calico IPs Confusion印花布 IP 混乱
【发布时间】:2023-04-09 07:39:01
【问题描述】:

我对 Calico IP 有点困惑:

如果我使用

将 calico 添加到 kubernetes 集群
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

CALICO_IPV4POOL_CIDR 是 192.168.0.0/16 所以IP范围是192.168.0.0到192.168.255.255

现在我已经启动了集群使用:

kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address=192.168.56.30

因此,现在 pod 的 IP 地址(使用 pod 网络 CIDR)将介于:20.96.0.0 到 20.111.255.255 之间

这两个不同的 IP 是什么。我的 Pod 正在获取 IP 地址 20.96.205.192 等等。

【问题讨论】:

    标签: kubernetes calico


    【解决方案1】:
    • CALICO_IPV4POOL_CIDR默认为#commented,看calico.yaml中的这些行:
    # The default IPv4 pool to create on startup if none exists. Pod IPs will be
    # chosen from this range. Changing this value after installation will have
    # no effect. This should fall within `--cluster-cidr`.
    # - name: CALICO_IPV4POOL_CIDR
    #   value: "192.168.0.0/16"
    

    对于所有效果,除非在部署前手动修改,部署期间不会考虑这些行

    • yaml 本身的另一重要行是:

    # kubeadm 上的 Pod CIDR 自动检测需要访问配置映射。

    这确认 CIDR 是从集群获得的,而不是从 calico.yaml 获得的。


    这两个不同的 IP 是什么?我的 Pod 正在获取 IP 地址 20.96.205.192 等等。

    • Kubeadm 支持许多Pod network add-ons,Calico 就是其中之一。另一方面,Calico 受到多种部署的支持,kubeadm 只是其中之一。

    • 您的部署中的 Kubeadm --pod-network-cidr 是定义 pod 网络 CIDR 的正确方法,这就是有效使用范围 20.96.0.0/12 的原因。

    • CALICO_IPV4POOL_CIDR 是未指定 pod 网络的 CIDR 池预留的其他类型的部署所必需的。


    注意:

    • 20.96.0.0/12 范围不是 Private Network 范围,如果具有该范围内公共 IP 的客户端尝试访问您的服务,它可能会导致问题。
    • classless 为专用网络保留的 IP 范围是:
      • 10.0.0.0/8(16.777.216 个地址)
      • 172.16.0.0/12(1.048.576 个地址)
      • 192.168.0.0/16(65.536 个地址)
    • 您可以将这些范围内的任何子网大小用于您的 POD CIDR 网络,只要确保它不与您网络中的任何子网重叠即可。

    其他参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多