gpt4 book ai didi

kubernetes - 部署部署后如何知道 Kubernetes 服务何时准备就绪?

转载 作者:行者123 更新时间:2023-12-02 19:43:42 27 4
gpt4 key购买 nike

我正在尝试与服务一起创建部署,然后在部署完成后立即访问该服务:

> kubectl create -f my-deployment.yaml
> kubectl create -f my-service.yaml
> kubectl rollout status deployment/my-deployment --watch --timeout 10m # This usually takes ~30 seconds

deployment "my-deployment" successfully rolled out

> curl "my-service" # This happens inside a pod, so the service DNS name should be available

有时这会起作用,但似乎存在竞争条件 - 如果 curl 命令发生得太快,则套接字似乎无法连接,并且我会遇到连接超时。

这似乎是如果没有准备好的 Pod 时我会得到的行为,按照这个问题:What happens when a service receives a request but has no ready pods?

我预计推出的完成意味着该服务已准备就绪。难道不是这样吗?是否有一些 Kubernetes 命令来“等待”服务可用? (我注意到服务没有条件,所以你不能执行kubectl wait...)

最佳答案

要了解服务是否已准备好,您可以检查是否存在具有服务名称的端点对象以及该端点对象是否具有 IP。如果存在 IP,则表示服务已准备就绪。但不能保证它仍然不会失败,因为您的基础设施中可能存在网络问题。

管理 Pod 的 K8s 原语(例如 Deployment)仅在决策时考虑 Pod 状态,例如滚动更新期间的进度。

例如,在部署滚动更新期间,新的 Pod 准备就绪。另一方面,由于某种原因(例如 API 机制、端点 Controller 、kube-proxy、iptables 或基础设施编程速度缓慢),服务、网络策略和负载均衡器尚未为新 Pod 做好准备。这可能会导致服务中断或后端容量损失。在极端情况下,如果滚动更新在任何新的替换 Pod 实际开始提供流量之前完成,这将导致服务中断。

这是proposal改善由上述问题引发的 Pod 准备情况。

关于kubernetes - 部署部署后如何知道 Kubernetes 服务何时准备就绪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59713279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com