了解 Kubernetes 中的实际和虚拟子网

Understanding actual and virtual subnets in Kubernetes

我正在 AWS 上设置一个自我管理的 Kubernetes 集群,在具有 CIDR 10.0.0.0/16 的 VPC 中使用三个实例,并为所有 instances/nodes 使用一个 AWS 子网 10.0.10.0/24 .

在使用 Kubeadm 初始化集群并指定 --pod-network-cidr 时,这个 CIDR 可以是什么吗?或者它是否需要与主机实例(控制平面和工作人员)所在的 AWS 子网保持一致?

Cilium 网络、服务网络也是如此……它们可以是任何东西吗,还是必须与实际的主机子网一致?

我还没有找到关于自我管理集群的可能(和不可能)子网配置的任何好的文档。

  • 根据 Kubernetes 文档 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network,主机 cidr、pod cidr 和服务 cidr 最好不要重叠。 所有 EC2 实例都从主机 CIDR 获取 IP。 Kubernetes 中的所有 Pods 将从 Pod CIDR 获取 IP。这些 Pod IP 由 Cilium 而不是 Kubernetes 分配,因为 Cilium 负责在您的情况下为 Kubernetes 提供网络。 所有 Kubernetes 服务都从服务 CIDR 获取 clusterIP。这些 clusterIP 由 Kubernetes 分配。

  • 根据下面的 kubeadm init 文档,service-cidr 的默认值为 10.96.0.0/12,这与您的 VPC cidr 10.0.0.0/16

    不重叠
kubeadm init --help | grep cidr
      --pod-network-cidr string              Specify range of IP addresses for the pod network. If set, the control plane will automatically allocate CIDRs for every node.
      --service-cidr string                  Use alternative range of IP address for service VIPs. (default "10.96.0.0/12")
sudo kubeadm init --pod-network-cidr=10.217.0.0/16