Ben*_*ole 7 deployment kubernetes kubernetes-health-check
我有一个简单的Kubernetes部署.它由一个未复制的单个容器组成.没有服务暴露容器.容器具有运行状况检查,该检查检查它是否已正确配置并可与其外部依赖项进行通信.我使用更新部署kubectl apply
.
更新部署后,我想检查新版本是否已完全推出并正在通过其运行状况检查.我无法弄清楚如何配置我的部署来实现这一目标.
我尝试了各种活动和准备探测,部署策略和就绪/进度部署属性的组合.我已经尝试检查部署状态,其pod和rollout命令.一切都无济于事.
我得到的印象是我应该查看部署条件以了解状态,但我无法找到有关这些条件是什么或如何实现这些条件的明确文档.
您尚未提及部署策略.但是我在k8s部署中遇到的一个普遍问题是,如果应用程序无法启动,它将无限重启.因此,kubectl delete deploy/******
在检测到部署失败状态后,您可能必须明确.(还有failureThreshold
探针,但我还没试过).
案例重新创建:
您可以使用的组合progressDeadlineSeconds
和readinessProbe
.假设您的应用程序需要60秒才能启动/启动.您需要配置progressDeadlineSeconds
超过60秒才能更安全.现在,在运行之后kubectl apply -f my-deploy.yaml
,运行kubectl rollout status deploy/my-deployment
命令.对我来说,它看起来像这样:
12:03:37 kubectl apply -f deploy.yaml
12:03:38 deployment "my-deployment" configured
12:04:18 kubectl rollout status deploy/my-deployment
12:04:18 Waiting for rollout to finish: 0 of 1 updated replicas are available (minimum required: 1)...
12:04:44 deployment "my-deployment" successfully rolled out
Run Code Online (Sandbox Code Playgroud)
执行rollout
命令后,kubectl会一直等到有一些答案.它还返回一个正确的退出代码echo $?
- 您可以以编程方式检查并删除部署.
案例rollingUpdate:
如果你有多个副本,那么上面提到的技巧应该有效.如果您只有一个副本,则使用maxUnavailable: 0
以及maxSurge: 1
上面的配置.
归档时间: |
|
查看次数: |
5755 次 |
最近记录: |