在 Kubernetes (k8s) 中为什么部署支持副本?
In Kubernetes (k8s) why do deployments supports replicas?
在 K8S 中,下面创建了一个有 n 个副本的部署 -
$ kubectl run nginx --imaage nginx --replicas 6
但是如何以负载平衡的方式访问这些副本,因为它们没有任何公共入口点(比如围绕它们的服务)。
那么部署能够扩展的目的是什么或者如何以负载平衡的方式访问它们(没有覆盖部署的服务)。
副本
.spec.replicas
是一个可选字段,用于指定所需的 Pods 个数。它默认为 1。这将有助于 replicaset 管理 pods,并且无论 kubernetes controller-manager 将如何处理,所需数量的 pods 都应该可用。
好吧,如果你是 运行 没有服务的部署,那么它没有任何意义,无论你为 1 个副本还是 6 个副本扩展什么。如果你创建服务并映射到你的部署,那么 kubernetes 会处理pods 之间的负载平衡。有关详细信息,请查看文档的这一部分 https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
这取决于您要通过部署解决的 use-cases。对于大多数用例,应用程序需要通过 HTTP/TCP 层上的服务公开,以接收副本之间的流量和负载平衡。
某些应用程序不需要通过服务公开并在 HTTP 或 TCP 层进行负载平衡,但您可能需要多个副本 运行 使用 deployment.For 示例,如果您有HTTP/TCP 定期处理一批记录或由外部非 HTTP/TCP 事件触发的应用程序。在这种情况下进行部署很有意义,因为您可以轻松扩展 up/down 或回滚并利用部署提供的其他关键功能。
所以简而言之,根据用例部署没有服务有时是有意义的。服务只需要在HTTP/TCP层的多个副本之间做负载均衡。
在 K8S 中,下面创建了一个有 n 个副本的部署 -
$ kubectl run nginx --imaage nginx --replicas 6
但是如何以负载平衡的方式访问这些副本,因为它们没有任何公共入口点(比如围绕它们的服务)。
那么部署能够扩展的目的是什么或者如何以负载平衡的方式访问它们(没有覆盖部署的服务)。
副本
.spec.replicas
是一个可选字段,用于指定所需的 Pods 个数。它默认为 1。这将有助于 replicaset 管理 pods,并且无论 kubernetes controller-manager 将如何处理,所需数量的 pods 都应该可用。
好吧,如果你是 运行 没有服务的部署,那么它没有任何意义,无论你为 1 个副本还是 6 个副本扩展什么。如果你创建服务并映射到你的部署,那么 kubernetes 会处理pods 之间的负载平衡。有关详细信息,请查看文档的这一部分 https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
这取决于您要通过部署解决的 use-cases。对于大多数用例,应用程序需要通过 HTTP/TCP 层上的服务公开,以接收副本之间的流量和负载平衡。
某些应用程序不需要通过服务公开并在 HTTP 或 TCP 层进行负载平衡,但您可能需要多个副本 运行 使用 deployment.For 示例,如果您有HTTP/TCP 定期处理一批记录或由外部非 HTTP/TCP 事件触发的应用程序。在这种情况下进行部署很有意义,因为您可以轻松扩展 up/down 或回滚并利用部署提供的其他关键功能。
所以简而言之,根据用例部署没有服务有时是有意义的。服务只需要在HTTP/TCP层的多个副本之间做负载均衡。