如何确定Kubernetes集群的最佳实现方式

时间:2019-01-03 11:46:17

标签: kubernetes

我最近开始走进Kubernetes的世界,那里有很多信息,而且大多数时候我感到非常困惑。 然后我想问一下如何选择更好的方法来管理基础架构:

enter image description here

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

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

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

这还是一个很好的解决方案,或者有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

  

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

nodeSelector,这是最简单的方法,因为您在节点kubectl label nodes k8s-node-1 disktype=ssd上添加了一个可由kubectl get nodes --show-labels验证的标签,并在yaml下的pod spec内添加了标签:

nodeSelector:
    disktype: ssd

Node affinity,由于您不再局限于完全匹配,因此更加复杂且更具表现力。 请记住,这仍然是测试版功能。

  

我的第二个疑问是服务必须可以直接从节点从外部单词访问,因此,如果我要使用副本,Web1和Web2应该侦听该服务公开的相同IP地址,还是可以通过kube-proxy来管理?

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

希望这对您有所帮助。

编辑:

OP建议使用Node restriction,在他的示例中,这是一种更好的解决方案,可让Pod在集群中节点的子集上动态运行。