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

如何使用Kubernetes服务账号调用Vertex AI

解决GKE容器中使用异步Vertex AI客户端的服务账号认证问题

针对你遇到的问题,核心原因是异步客户端的自动凭证发现逻辑与同步客户端存在差异,加上GKE环境下的Workload Identity认证需要确保客户端正确加载默认凭证。以下是具体解决方案:

1. 显式加载默认异步凭证

异步客户端可能无法自动发现GKE Workload Identity提供的凭证,需要手动获取并传入。修改代码如下:

from google.cloud import aiplatform_v1
from google.auth import default
from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.post("/predict/")
async def predict(input_data: dict):
    try:
        # 获取默认凭证(自动适配GKE Workload Identity环境)
        credentials, project_id = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
        # 初始化异步客户端时传入凭证
        client = aiplatform_v1.PredictionServiceAsyncClient(credentials=credentials)
        
        endpoint = f"projects/{project_id}/locations/[你的区域]/endpoints/[你的端点ID]"
        instances = [input_data]
        
        response = await client.predict(endpoint=endpoint, instances=instances)
        return {"predictions": response.predictions}
    except Exception as e:
        # 捕获并输出详细异常,便于排查
        print(f"预测请求失败: {str(e)}", flush=True)
        raise HTTPException(status_code=500, detail=f"内部服务错误: {str(e)}")

2. 验证依赖版本兼容性

旧版本的google-cloud-aiplatform或google-auth可能存在异步凭证获取的bug,升级到稳定版:

pip install --upgrade google-cloud-aiplatform>=1.30.0 google-auth>=2.15.0

3. 清理环境变量

确保容器中未设置GOOGLE_APPLICATION_CREDENTIALS环境变量(该变量会强制客户端读取本地密钥文件,而Workload Identity环境不需要)。如果之前配置过该变量,需从容器部署配置中移除。

4. 确认服务账号权限

验证容器绑定的GCP服务账号具备Vertex AI预测权限:

  • 给服务账号添加roles/aiplatform.user角色(包含端点预测权限)
  • 或创建自定义角色,包含aiplatform.endpoints.predict权限

5. 正确捕获异步异常

异步客户端的异常可能未被外层try/catch正确捕获,需确保整个异步调用逻辑被包裹在try块内,同时打印异常详情(如上述代码所示),便于定位具体错误(如认证失败、端点不存在等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:54:51