3

我对 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 等等。

4

1 回答 1

2
  • 默认情况下,请查看CALICO_IPV4POOL_CIDRcalico.yaml中这些行:#commented
# 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 网络插件,Calico 就是其中之一。另一方面,Calico 受到多种部署的支持,kubeadm 只是其中之一。

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

  • CALICO_IPV4POOL_CIDR对于没有为 pod 网络指定 CIDR 池预留的其他类型的部署,这是必需的。


笔记:

  • 该范围20.96.0.0/12不是专用网络范围,如果具有该范围内公共 IP 的客户端尝试访问您的服务,则可能会导致问题。
  • 专用网络 的无类别保留 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 网络使用这些范围内的任何子网大小,只需确保它不与您网络中的任何子网重叠。

其他参考:

于 2020-06-02T15:03:58.023 回答