1

我希望有人能在 Kubernetes 网络设置上给我启发。我想使用 flannel 作为 Kubernetes 网络层。

我在 Kubernetes 上:1.5.5 顺便说一句。

问题是,你可以(应该?)定义一个 cidr 的地方太多了,我不再只见树木不见森林。

给你一些关于我的设置的信息:

  • 我的主机部署在 10.9.0.0/24 范围内。
  • 我想使用 10.254.0.0/16 作为法兰绒范围
  • 目前,工作节点上的 docker 使用 172.17.0.0/16 范围

kube-apiserver 有以下 cidr 选项:

--service-cluster-ip-range

kube-controller-manager 具有以下 cidr 选项:

--cluster-cidr
--service-cluster-ip-range

这两者有什么区别?

kube-proxy 有这个:

--cluster-cidr={{ kubernetes_cluster_cidr }}

什么 ip 范围到底在哪里?

4

1 回答 1

1

实际上,那里有 2 个不同的网络层:

  • Cluster-cidr:pods 层(你想在其中使用 10.254.0.0/16):一旦你的 flannel 网络启动并运行,你必须配置 Docker 来使用它(通过 systemd 插件或类似的东西: echo "DOCKER_OPTS="--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}"" >> /etc/default/docker)。这样,集群中的所有“docker0”接口都将连接到 flannel 网络中。
  • service-cluster-ip-range:服务层。服务用于抽象一组逻辑 pod。只要您不知道 pod 将位于何处,或者将分配给它的 IP……您需要某种抽象来到达一个 pod/pod 集,无论它们在哪里。

Kubernetes 服务是一种抽象,它定义了一组逻辑 Pod 和访问它们的策略 - 有时称为微服务。服务所针对的 Pod 集(通常)由标签选择器确定(请参阅下文了解为什么您可能需要没有选择器的服务)。例如,考虑一个运行 3 个副本的图像处理后端。这些副本是可替代的——前端不关心他们使用哪个后端。虽然组成后端集的实际 Pod 可能会发生变化,但前端客户端不需要知道这一点或自己跟踪后端列表。Service 抽象实现了这种解耦。

注意:服务层不得与您的集群 pod 网络(法兰绒)或任何其他现有网络基础设施重叠。

于 2017-03-29T14:41:50.517 回答