如何为 Kubernetes 集群确定合适的 pod CIDR 值?

How can I determine an appropriate pod CIDR value for a Kubernetes cluster?

我正在启动一个 kubernetes 集群:

kubeadm init --pod-network-cidr=192.168.1.0/16 --apiserver-advertise-address=192.168.0.33

我不太熟悉网络概念或 CIDR,如何确定 pod CIDR 的合适值?

我之前使用过 10.244.0.0/16 但结果是:

Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "78cf556b2e87e15cc5ec8827ca3a397c16dcfb90f045e225a17028f072db6e5f" network for pod "coredns-78fcdf6894-c7kq2": NetworkPlugin cni failed to set up pod "coredns-78fcdf6894-c7kq2_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.1.1/24

关于 CIDR (Classless Inter-Domain Routing):这只是一个符号,用于定义您要在网络中使用的 IP 地址的子网/范围。

如果您想使用 /16,您必须计划创建一个相当大的 Kubernetes 集群,因为这将为您提供 >65k 个虚拟 IP 地址(请注意,我们正在谈论 SDN / 虚拟网络,即您将为 kubernetes PODs 设置的 IP,而不是您的实际节点/主机)。 这是一个 CIDR table,您可以将其用作参考来确定更合适的 table 范围: https://kb.wisc.edu/ns/page.php?id=3493

现在,就您的失败而言,这取决于您在 Kubernetes 集群中使用的 CNI (Container Networking Interface) 插件。如果您使用的是默认值,则必须是 Kubenet,这有局限性。 更多信息在这里: https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ 和这里: https://chrislovecnm.com/kubernetes/cni/choosing-a-cni-provider/

希望对您有所帮助。