pegasystems/k8s-wait-for该Docker镜像封装了一个轻量级脚本工具,专门用于在Kubernetes环境中等待指定资源(服务、作业或Pod)达到用户定义的期望状态。主要用于解决自动化部署流程中的资源依赖问题,确保后续操作仅在前置条件满足时执行。
通过Docker命令直接运行镜像,指定目标资源类型、名称、命名空间及期望状态等参数。工具将定期查询Kubernetes API,直至资源达到期望状态或超时退出。
| 参数名 | 类型 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|---|
--resource-type | 字符串 | 目标Kubernetes资源类型,可选值:service、job、pod | 是 | 无 |
--name | 字符串 | 目标资源的名称 | 是 | 无 |
--namespace | 字符串 | 目标资源所在的命名空间 | 否 | default |
--desired-state | 字符串 | 资源的期望状态(不同资源类型支持的状态值不同,详见下方说明) | 是 | 无 |
--timeout | 整数 | 最大等待时间(秒),超时后工具将以非0状态退出 | 否 | 300(5分钟) |
--interval | 整数 | 状态检查间隔时间(秒) | 否 | 5 |
Running(运行中)、Ready(就绪)、Succeeded(成功完成)、Failed(失败)Ready(端点就绪)、Available(服务可用)Complete(完成)、Failed(失败)、Active(活跃)支持通过环境变量传递配置参数,优先级低于命令行参数:
| 环境变量名 | 对应命令行参数 | 描述 |
|---|---|---|
RESOURCE_TYPE | --resource-type | 目标Kubernetes资源类型 |
RESOURCE_NAME | --name | 目标资源名称 |
RESOURCE_NAMESPACE | --namespace | 目标资源命名空间 |
DESIRED_STATE | --desired-state | 期望状态 |
TIMEOUT | --timeout | 超时时间(秒) |
INTERVAL | --interval | 检查间隔(秒) |
KUBECONFIG | - | Kubeconfig文件路径(默认使用集群内配置) |
bashdocker run --rm \ -v $HOME/.kube/config:/root/.kube/config \ # 挂载本地kubeconfig(集群外使用) [镜像名称] \ --resource-type pod \ --name api-server-pod \ --desired-state Running \ --timeout 600 \ --interval 10
bashdocker run --rm \ -e KUBECONFIG=/kube/config \ -v /path/to/kubeconfig:/kube/config \ [镜像名称] \ --resource-type job \ --name data-migration \ --namespace backend \ --desired-state Complete \ --timeout 1800
yaml# Pod定义片段 apiVersion: v1 kind: Pod metadata: name: app-with-dependency spec: initContainers: - name: wait-for-db image: [镜像名称] command: ["--resource-type", "service", "--name", "mysql-service", "--namespace", "db", "--desired-state", "Ready", "--timeout", "300"] serviceAccountName: resource-reader # 需配置具有service查看权限的服务账户 containers: - name: main-app image: your-app-image
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务