如何通过部署更新共享服务?
How a shared service can be updated by a deployment?
在 Kubernetes 文档中,Using Labels 部分说:
A Service can be made to span multiple Deployments by omitting release-specific labels from its selector. When you need to update a running service without downtime, use a Deployment.
我不明白部署是如何实现的?当我们想要更新服务时,它不应该单独发生(单独发生),与任何 Deployments 分开吗?喜欢:
kubectl apply -f service.yaml
服务指向由其标签选择器确定的一组端点 (pods)。
让我们以具有标签选择器的服务为例
app: api
version: v1
它将指向所有 pods 有这两个标签(可能有更多)。
如果您部署带有标签 version: v2
的新版本,现有服务将不会指向这些 pods,因为标签选择器不再匹配 pods 标签。
另一方面,如果您从服务的标签选择器中省略 version: v1
并仅保留 app: api
,该服务将指向任何具有 app: api
标签的 pod ,意味着当你部署一个新版本时,即使版本标签有了新的值,服务仍然会指向这些 pods.
这样您可以更新服务 pods 而无需更新服务本身 - 您只能通过部署新的 api 版本来做到这一点。
在 Kubernetes 文档中,Using Labels 部分说:
A Service can be made to span multiple Deployments by omitting release-specific labels from its selector. When you need to update a running service without downtime, use a Deployment.
我不明白部署是如何实现的?当我们想要更新服务时,它不应该单独发生(单独发生),与任何 Deployments 分开吗?喜欢:
kubectl apply -f service.yaml
服务指向由其标签选择器确定的一组端点 (pods)。
让我们以具有标签选择器的服务为例
app: api
version: v1
它将指向所有 pods 有这两个标签(可能有更多)。
如果您部署带有标签 version: v2
的新版本,现有服务将不会指向这些 pods,因为标签选择器不再匹配 pods 标签。
另一方面,如果您从服务的标签选择器中省略 version: v1
并仅保留 app: api
,该服务将指向任何具有 app: api
标签的 pod ,意味着当你部署一个新版本时,即使版本标签有了新的值,服务仍然会指向这些 pods.
这样您可以更新服务 pods 而无需更新服务本身 - 您只能通过部署新的 api 版本来做到这一点。