首页 > 解决方案 > 如何确定 Kubernetes 集群的最佳实现

问题描述

我最近才开始走进 Kubernetes 的世界,信息量很大,很多时候我真的很困惑;然后我想问我如何选择更好的方式来管理基础设施,如下所示:

在此处输入图像描述

节点和 Kubernetes master 隔离在不同的 DMZ 中,如图所示打开端口和方向。

您将使用哪种方式让 Pod 在正确的节点上执行?(例如,Nginx pod 仅在 Web1 和/或 web2 上运行,而 pgSQL pod 仅在 DB1 和/或 DB2 上执行)使用服务器标签系统是否足够好或有更好的解决方案来管理这个?

我的第二个疑问是服务必须可以直接从节点的外部单词访问,所以如果我想使用副本,我想 Web1 和 Web2 应该侦听服务暴露的相同 IP 地址,或者可以这样通过 kube-proxy 管理?目前我正在考虑在节点之间配置一个分布式交换机,并将 pod 的外部 IP 地址设置为连接到分布式交换机的 IP 之一。

这也是一个很好的解决方案还是有更好的方法来做到这一点?

标签: kubernetes

解决方案


您将使用哪种方式让 Pod 在正确的节点上执行?

nodeSelector,最简单的方法,因为您向节点添加了一个标签,该标签可以在您添加的pod 内部和内部kubectl label nodes k8s-node-1 disktype=ssd进行验证:kubectl get nodes --show-labelsyamlspec

nodeSelector:
    disktype: ssd

节点亲和力,因为您不再局限于精确匹配,所以更加复杂和更具表现力。请记住,这仍然是一个测试版功能。

我的第二个疑问是服务必须可以直接从节点的外部单词访问,所以如果我想使用副本,我想 Web1 和 Web2 应该在服务暴露的相同 IP 地址上侦听,或者可以这样通过 kube-proxy 管理?

在这里,我认为您将需要使用Type LoadBalancer作为Service,大多数云提供商都有自己的内部 LoadBalancer GCPAWSAzure。还有MetalLB,它是裸机 Kubernetes 集群的实现。

希望这对您有所帮助。

编辑:

OP 建议使用节点限制,在他的示例中这是一个更好的解决方案,可以让 pod 在集群中的节点子集上动态运行。


推荐阅读