如何使用Ansible k8s_info模块检查DaemonSet期望调度数与可用数是否相等
如何使用Ansible k8s_info模块检查DaemonSet的期望调度数与可用数是否相等?
我来分享下具体的实现方法,直接上实用的方案:
首先得明确DaemonSet状态里的两个核心字段:
desiredNumberScheduled: 集群中DaemonSet期望调度的Pod总数numberAvailable: 当前实际处于可用状态的Pod数量
我们要做的就是验证这两个数值完全匹配,下面是完整的Ansible Playbook示例,既可以做一次性检查,也能用来等待DaemonSet完全就绪:
- name: "检查并等待DaemonSet达到就绪状态" k8s_info: api_key: "{{ k8s_api_key }}" kind: DaemonSet api_version: apps/v1 name: fluentd namespace: openshift-logging register: ds until: - ds.resources is defined # 确保成功获取到资源数据 - ds.resources[0].status.desiredNumberScheduled == ds.resources[0].status.numberAvailable retries: 60 # 最多重试60次 delay: 10 # 每次重试间隔10秒
代码细节说明:
k8s_info模块:通过指定DaemonSet的名称、命名空间和API版本,精准获取目标资源的状态数据,并把结果存到ds变量里。until条件判断:- 先确认
ds.resources已定义,避免因API调用失败导致后续判断报错; - 直接对比返回结果中第一个(也是唯一一个,因为指定了具体名称)资源的两个关键数值。
- 先确认
如果你更习惯用json_query处理结构化数据,也可以把第二个条件替换成:
- ds | json_query('resources[*].status.desiredNumberScheduled == resources[*].status.numberAvailable')
这个写法会对所有返回的DaemonSet资源(这里仅一个)做数值对比,返回true即表示两者相等。
内容的提问来源于stack exchange,提问作者funtoos
相关产品推荐
相关产品推荐

