我正在使用Ansible K8s模块来做Pod部署,但不幸的是,我没有找到正确使用wait
和wait_condition
的方法。
所以我尝试使用until
和retry
来实现另一个等待
每次运行行动手册后,在使用k8s模块进行部署后,直到NewReplicaSetAvailable在2分钟(60 * 2秒)内显示在部署中,否则部署失败。
如果您需要验证部署结果,我在这里写下来。
- name: Verify the deploy result
shell: "kubectl -n kube-system get deployment coredns --output=jsonpath='{.status.conditions[*].reason}'"
register: deploy_res
until: "'NewReplicaSetAvailable' in deploy_res.stdout"
retries: 60
delay: 2
2条答案
按热度按时间fhity93d1#
模块
k8s
不提供部署的状态。对于部署(或任何其他资源)的状态,您应该使用模块k8s_info
。然后您可以检查此任务。示例:
对于
until
过滤器,当然有更好的解决方案,但我已经用这种方法解决了类似的用例。until
过滤器检查是否存在原因为NewReplicaSetAvailable
的条件,并且它必须是True
。如果发生这种情况,长度等于1
snz8szmq2#
可以像副本集的数量相等或不相等一样进行确认,在所有pod上更新图像。
可在kubernetes Ansible repo k8s_waiter上找到提及的解决方案