You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过本地containerd注册表的Docker标签获取SCDF应用元数据

问题根因与解决方案

核心问题

Connection refused报错的根本原因是:Kubernetes Pod有独立的网络命名空间,SCDF Pod内部访问localhost:32000时,指向的是Pod自身的本地端口,而非microk8s节点上运行的containerd本地注册表端口,自然无法建立连接。

修复步骤

  • 替换注册表访问地址
    不要在SCDF配置里使用localhost:32000作为注册表地址:

    • microk8s内置的本地注册表默认在集群内可通过域名microk8s-registry.kube-system.svc.cluster.local:5000直接访问,推荐优先用这个集群内域名
    • 如果你是手动通过NodePort暴露的32000端口,也可以替换为microk8s节点的内网IP加32000端口使用

    开发环境临时测试也可以给SCDF Pod添加hostNetwork: true配置,让Pod共享节点的网络命名空间,即可直接用localhost访问节点上的服务,但该配置有端口冲突风险,不建议生产使用。

  • 修正SCDF ConfigMap配置
    确认你的配置符合SCDF 2.9.1的私有注册表配置规范,参考配置如下:

    spring:
      cloud:
        dataflow:
          container:
            registry-configurations:
              local-registry:
                registry-host: 实际的注册表集群内地址
                registry-port: 对应端口
                disable-ssl-verification: true # 开发环境无有效SSL证书时必须开启
    

    配置修改后需要重启SCDF Pod生效。

  • 验证网络连通性
    SCDF重启完成后,执行命令进入Pod内部验证注册表可达:

    kubectl exec -it <SCDF Pod名称> -n <SCDF所在命名空间> -- curl <注册表地址>/v2/_catalog
    

    正常会返回你本地注册表的镜像列表。

  • 补充运行时配置
    确认microk8s的containerd配置已经把你的私有注册表地址加入不安全注册表列表,配置文件路径为/var/snap/microk8s/current/args/containerd-template.toml,修改后需要重启microk8s的containerd服务生效。

内容的提问来源于stack exchange,提问作者CEDDM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:24:03