如何解决了解 Kubernetes 中的实际和虚拟子网
我正在 AWS 上设置一个自我管理的 Kubernetes 集群,在一个 VPC 中使用三个实例和 CIDR 10.0.0.0/16
,并为所有实例/节点使用一个 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 中的所有 Pod 都会从 Pod CIDR 获得 IP。这些 Pod IP 是由 Cilium 分配的,而不是由 Kubernetes 分配的,因为在您的情况下,Cilium 负责为 Kubernetes 提供网络。 所有 Kubernetes 服务都从服务 CIDR 获取 clusterIP。这些集群IP由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")
- 根据 https://cilium.io/blog/2018/09/26/bionic-beaver#initialize-the-kubernetes-master 博客,您应该对 Pod 使用 CIDR 10.217.0.0/16。因此,请在 kubeadm init 下运行以下命令。 CIDR 10.217.0.0/16 也不与您的 VPC cidr 10.0.0.0/16 重叠
sudo kubeadm init --pod-network-cidr=10.217.0.0/16
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。