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

GKE通过Helm安装Vault时vault-k8s:0.16.1镜像拉取失败

问题定位

从Pod事件日志可以直接判定故障原因:GKE集群节点无法连通Docker Hub官方镜像仓库(443端口连接超时),导致vault-agent-injector组件依赖的hashicorp/vault-k8s:0.16.1镜像拉取失败,和执行的Helm参数、Vault HA配置本身没有关系。
此前Helm安装运行正常,大概率是当时网络连通性正常,或是之前安装版本拉取的镜像已经存在节点本地缓存,不需要重新从公网拉取。

排查步骤
  • 启动临时调试Pod验证网络连通性:执行kubectl run net-test --image=busybox:latest --rm -it --restart=Never -- sh,进入容器后执行wget -T 10 https://registry-1.docker.io/v2/,确认是否触发超时,复现拉取失败的网络问题
  • 检查集群网络配置:如果是私有GKE集群,确认节点所在子网是否绑定了可用的Cloud NAT,没有公网IP的工作节点默认无法直接访问公网镜像源
  • 检查VPC出口防火墙规则:确认没有规则拦截节点到公网443端口的出站流量,同时检查Cloud NAT的端口配额、公网IP配额是否耗尽,导致新连接无法建立
可落地方案
  • 最快修复方案:使用私有镜像仓库缓存镜像
    提前将hashicorp/vault-k8s:0.16.1以及对应版本的Vault服务端镜像同步到可正常访问的私有镜像仓库,安装Helm时通过参数覆盖默认镜像地址,示例命令:
    helm install vault hashicorp/vault \
    --set='server.ha.enabled=true' \
    --set='server.ha.raft.enabled=true' \
    --set='injector.image.repository=你的私有镜像仓库地址/hashicorp/vault-k8s' \
    --set='injector.image.tag=0.16.1' \
    --set='server.image.repository=你的私有镜像仓库地址/hashicorp/vault'
    

    注意:不要使用无运营主体的公共镜像代理拉取生产环境镜像,存在供应链投毒风险,务必使用自己可控的私有镜像仓库完成镜像同步
    该方案不依赖公网连通性,稳定性最高,生产环境推荐使用。

  • 网络修复方案:打通公网出口
    给私有GKE集群节点配置可用的Cloud NAT,放开到Docker Hub等必要镜像仓库的443端口出站规则;若NAT配额耗尽则扩容公网IP池、调整单节点端口分配上限,修复后节点可正常拉取公网镜像。
  • 小规模临时方案:手动导入镜像
    集群节点数量少时,可以在有公网的环境提前pull对应镜像,导出后传输到所有GKE节点,通过crictl load命令导入到节点本地镜像缓存,kubelet检测到本地存在对应镜像就不会再去公网拉取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:06:17