我正在尝试与服务一起创建部署,然后在部署完成后立即访问该服务:
> 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,这似乎是我会得到的行为,根据这个问题:当服务收到请求但没有准备好的 pod 时会发生什么?
我预计推出的完成意味着服务可以保证准备就绪。不是这样吗?是否有一些 Kubernetes 命令可以“等待”服务可用?(我注意到服务没有条件,所以你不能这样做kubectl wait
......)