Karaf feature.xml:远程仓库宕机时的自动重试问题
Karaf远程仓库恢复后feature.xml不自动刷新的无重启解决方案
手动触发仓库与feature缓存刷新
- 进入K8s中Karaf Pod的控制台:
kubectl exec -it <你的Pod名称> -- /opt/karaf/bin/client - 先查看已注册的仓库列表:
feature:repo-list,找到对应的远程仓库名称 - 执行刷新命令:
feature:repo-refresh <目标仓库名> - 刷新完成后,重新安装/更新feature:
feature:install <feature名称>或feature:update <feature名称>
配置自动重试与缓存过期策略
- 编辑Pod内的
etc/org.apache.karaf.features.cfg文件,调整以下参数:- 设置仓库缓存过期时间:
features.repository.cache.ttl=300(单位秒,示例为5分钟,可按需调整) - 开启仓库自动刷新:
features.repository.autorefresh=true - 配置 resolver 重试次数:
features.resolver.retry.count=3,重试间隔:features.resolver.retry.interval=60(单位秒)
- 设置仓库缓存过期时间:
- 配置修改后,执行
config:update org.apache.karaf.features让配置立即生效,无需重启Pod
清理本地缓存(针对缓存损坏的情况)
- 清除指定仓库的本地缓存:
feature:repo-clean <目标仓库名> - 或者清理所有仓库缓存:
feature:repo-clean --all - 之后重新执行
feature:repo-refresh拉取最新的feature.xml
K8s环境下的便捷操作技巧
- 如果无法直接进入控制台,可通过
kubectl cp将本地修改好的org.apache.karaf.features.cfg拷贝到Pod的etc目录,再执行kubectl exec <你的Pod名称> -- /opt/karaf/bin/client config:update org.apache.karaf.features - 可以在容器内添加定时任务(比如用cron),定时执行
/opt/karaf/bin/client feature:repo-refresh <目标仓库名>,实现自动刷新,避免手动干预
内容的提问来源于stack exchange,提问作者Maciej Kajetan Chrzanowski
相关产品推荐
相关产品推荐

