Kubernetes和法兰绒networking设置
我希望有人能够启发我Kubernetesnetworking设置。 我想使用绒布作为Kubernetesnetworking层。
我在Kubernetes:1.5.5顺便说一句。
问题是,有太多的地方可以(应该?)定义一个cidr,我没有看到树木的树木了。
给你一些关于我的设置的信息:
- 我的主机部署在10.9.0.0/24范围内。
- 我想使用10.254.0.0/16作为法兰绒范围
- 目前,worker节点上的docker使用172.17.0.0/16范围
kube-apiserver对cidr有以下select:
--service-cluster-ip-range
kube-controller-manager为cidr提供了以下选项:
--cluster-cidr --service-cluster-ip-range
这两者有什么区别?
kube-proxy有这个:
--cluster-cidr={{ kubernetes_cluster_cidr }}
什么ip范围到哪里呢?
其实,你有两个不同的networking层:
- Cluster-cidr:pods层(你想使用10.254.0.0/16的地方):一旦你的法兰绒networking正常运行,你将不得不configurationDocker来使用它(通过systemd插件或者类似的东西:
echo "DOCKER_OPTS="--bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}"" >> /etc/default/docker
)。 这样,群集中的所有“docker0”接口都将在法兰绒networking中连接。 - Service-cluster-ip-range: 服务层。 服务用于抽象一组逻辑的豆荚。 只要你不知道一个吊舱的位置,或者将要分配给它的IP,你需要某种抽象来到达一个吊舱/一套吊舱,无论它们在哪里。
一个Kubernetes服务是一个抽象,它定义了一个Pod的逻辑集合和一个访问它们的策略 – 有时被称为微服务。 服务所针对的Pod集(通常)由标签select器决定(请参阅下面为什么您可能需要没有select器的服务)。 作为一个例子,考虑一个运行3个副本的image processing后端。 这些副本是可替代的 – 前端不关心他们使用的后端。 虽然构成后端集的实际Pod可能会发生变化,但前端客户端不需要知道该事件,也不需要跟踪后端列表本身。 服务抽象使这种解耦成为可能。
注:服务层不得与您的群集吊舱networking(法兰绒)或任何其他现有networking基础架构重叠。