在Kubernetes(k8s)中,为什么部署支持副本?

时间:2020-08-26 06:57:46

标签: kubernetes kubernetes-pod kubernetes-deployment

在K8S中,以下创建了具有n个副本的部署-
$ kubectl run nginx --imaage nginx --replicas 6

但是,由于这些副本没有任何公共入口点(例如包裹在它们周围的服务),如何以负载平衡的方式进行访问。

那么,部署能够扩展 OR 的目的是什么?如何以负载平衡的方式访问它们(在部署过程中不包装服务)。

2 个答案:

答案 0 :(得分:4)

复制品

.spec.replicas是一个可选字段,用于指定所需Pod的数量。它的默认值为1.,这将有助于副本集管理Pod,并且无论使用哪种kubernetes控制器管理器,都应该可以使用所需数量的Pod。

如果您正在运行不带服务的部署,那么无论您要扩展1个副本还是6个副本,都没有任何意义。如果您创建服务并映射到部署,那么kubernetes将负责Pod之间的负载平衡。有关更多信息,请检查文档https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

的本部分

答案 1 :(得分:1)

这取决于您要通过部署解决的用例。在大多数情况下,需要通过HTTP / TCP层通过服务公开应用程序,以接收流量和副本之间的负载平衡。

某些应用程序不需要由服务公开并在HTTP或TCP层进行负载平衡,但是您可能需要使用一个部署来运行多个副本。例如,如果您有一个非HTTP / TCP应用程序来处理批处理定期或由外部非HTTP / TCP事件触发的记录数量。在这种情况下进行部署很有意义,因为您可以轻松地放大/缩小或回滚并利用部署提供的其他关键功能。

因此,简而言之,根据用例,有时无需服务即可进行部署。仅需要服务即可在HTTP / TCP层的多个副本之间进行负载平衡。