为什么 Kubernetes Services 是在 Deployment/Pods 之前创建的?

Why Kubernetes Services are created before Deployment/Pods?

如果我必须在 Kubernetes 上部署工作负载并且还必须将其作为服务公开,我必须创建一个 Deployment/Pod 和一个服务。如果 Kubernetes 产品来自云并且我们正在创建 LoadBalancer 服务,那么在工作负载之前先创建服务是有意义的,因为 url 创建服务需要时间。但是如果 Kubernetes 部署在非云平台上,那么在工作负载之前创建服务是没有意义的。 那么为什么我必须先创建服务然后再创建工作负载?

不需要在部署之前创建服务,反之亦然。您可以在服务之前创建部署,也可以在部署之前创建服务。

如果您在服务之前创建部署,则在创建 LoadBalancer 之前,无法从外部访问部署中打包的应用程序。

相反,如果您先创建 LoadBalancer,应用程序的流量将不会路由到应用程序,因为它尚未创建,给调用者 503s。

您要向 Kubernetes 声明您希望基础设施的状态如何。例如“我想要部署和服务”。 Kubernetes 会启动并创建它们,但它们不一定最终会以可预测的顺序创建。例如,LoadBalancer 需要一段时间才能从您的云提供商分配 IP,因此即使资源是在集群中创建的,它实际上并没有获得任何流量。