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

如何用Python脚本向Google Kubernetes集群发送请求并获取响应

How to Send Requests to Your Python API on Google Kubernetes Engine (GKE) with a Python Script

Hey there! Since you’ve already got your Python API up and running on GKE and can access it via CLI or browser, connecting a Python script to it is totally straightforward. Let’s walk through the steps together:

1. Confirm Your API's External Access Endpoint

First, you need to nail down the public address and port your API is exposed on. Use this kubectl command to check your GKE services:

kubectl get services

Look for the service tied to your Python API. If it’s a LoadBalancer type, you’ll see a public IP in the EXTERNAL-IP column. If you’re using an Ingress to route traffic, run this command instead to get your public domain/IP:

kubectl get ingress

Your final API endpoint will look something like http://<EXTERNAL-IP>:8080/your-api-route (swap in your actual values, and use https:// if you’ve configured SSL certificates).

2. Write the Python Request Script

We’ll use the requests library—it’s the most common and user-friendly tool for HTTP requests in Python. If you don’t have it installed yet, run this first:

pip install requests

Below are two common script examples tailored to different API request types:

Example 1: Basic GET Request

Use this if your API returns data when you hit a route (like you’d do with a browser or curl):

import requests

# Replace with your actual API endpoint
API_ENDPOINT = "http://your-gke-service-external-ip:8080/hello-world"

try:
    # Send the GET request to your GKE-hosted API
    response = requests.get(API_ENDPOINT)
    
    # Raise an error if the request failed (e.g., 404, 500)
    response.raise_for_status()
    
    # Print out the response details
    print(f"✅ Request Successful! Status Code: {response.status_code}")
    print("📄 Response Content:")
    # Parse and print JSON if your API returns it
    if "application/json" in response.headers.get("Content-Type", ""):
        print(response.json())
    else:
        print(response.text)
except requests.exceptions.RequestException as e:
    print(f"❌ Error sending request: {str(e)}")

Example 2: POST Request (for sending data to your API)

Use this if your API accepts input (like form data or JSON payloads):

import requests

API_ENDPOINT = "http://your-gke-service-external-ip:8080/submit-data"
# Sample payload to send to your API
payload = {
    "username": "test-user",
    "message": "Hello from my Python script!"
}

try:
    # Send the POST request with JSON payload
    response = requests.post(API_ENDPOINT, json=payload)
    response.raise_for_status()
    
    print(f"✅ POST Request Successful! Status Code: {response.status_code}")
    print("🔄 API Response:")
    print(response.json())
except requests.exceptions.RequestException as e:
    print(f"❌ Error: {str(e)}")

3. Troubleshooting Common Issues

If your script can’t connect to the API, check these quick fixes:

  • Firewall Rules: Make sure GKE’s firewall allows external traffic to your service port. Run gcloud compute firewall-rules list to verify there’s a rule allowing access to your API’s port (GKE usually creates this automatically for LoadBalancers, but double-check if you’ve modified rules).
  • Service Exposure: Confirm your service is set to LoadBalancer or routed via Ingress. NodePort services require node public IPs + port, which is less common for external access.
  • Authentication: If your API uses API keys or bearer tokens, add them to your request headers:
    headers = {
        "Authorization": "Bearer your-auth-token",
        "X-API-Key": "your-api-key"
    }
    response = requests.get(API_ENDPOINT, headers=headers)
    
  • API Health: Double-check the endpoint works with curl or your browser first—this rules out issues with the API itself.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:29