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

如何通过Python API检查GKE集群是否使用预创建的VPC辅助IP范围

检查GKE辅助IP范围占用状态的Python实现方案

核心逻辑

要判断目标辅助IP范围是否被GKE集群占用,需要两步:一是抓取所有GKE集群正在使用的IP范围,二是核对VPC中该范围的状态——因为即使VPC里有这个辅助范围,也可能未被任何GKE集群或其他资源使用。

1. 必备权限

确保你的服务账号拥有以下权限:

  • container.clusters.get:获取GKE集群配置详情
  • compute.addresses.list:查询VPC中的辅助IP范围信息

2. 获取GKE集群已使用的IP范围

通过GKE Python客户端库,遍历集群及节点池的配置,提取所有正在使用的IP段:

from google.cloud import container_v1

def get_gke_used_ip_ranges(project_id, region):
    client = container_v1.ClusterManagerClient()
    parent = f"projects/{project_id}/locations/{region}"
    clusters = client.list_clusters(parent=parent)

    used_ranges = set()
    for cluster in clusters:
        # 提取Pod网段(集群级辅助IP范围)
        if cluster.cluster_ipv4_cidr:
            used_ranges.add(cluster.cluster_ipv4_cidr)
        # 提取服务网段(集群级辅助IP范围)
        if cluster.services_ipv4_cidr:
            used_ranges.add(cluster.services_ipv4_cidr)
        # 提取节点池使用的IP范围(如果配置了辅助IP用于节点)
        for node_pool in cluster.node_pools:
            if node_pool.config.ipv4_cidr_block:
                used_ranges.add(node_pool.config.ipv4_cidr_block)
    return used_ranges

3. 查询VPC中的辅助IP范围及状态

通过Compute Engine API,筛选出指定VPC下的所有辅助IP范围,获取其CIDR和状态:

from google.cloud import compute_v1

def get_vpc_secondary_ip_ranges(project_id, region, vpc_name):
    client = compute_v1.AddressesClient()
    filter_str = f"network=https://www.googleapis.com/compute/v1/projects/{project_id}/global/networks/{vpc_name} AND addressType=SECONDARY"
    request = compute_v1.ListAddressesRequest(
        project=project_id,
        region=region,
        filter=filter_str
    )
    addresses = client.list(request=request)

    secondary_ranges = []
    for addr in addresses:
        secondary_ranges.append({
            "cidr": addr.address,
            "status": addr.status
        })
    return secondary_ranges

4. 校验目标IP范围状态

结合上述两个接口的结果,判断目标CIDR的使用状态:

def check_target_range_status(target_cidr, project_id, region, vpc_name):
    used_ranges = get_gke_used_ip_ranges(project_id, region)
    vpc_ranges = get_vpc_secondary_ip_ranges(project_id, region, vpc_name)

    # 先检查是否被GKE集群占用
    if target_cidr in used_ranges:
        return "已被GKE集群占用"
    
    # 再检查VPC中的状态
    for range_info in vpc_ranges:
        if range_info["cidr"] == target_cidr:
            if range_info["status"] == "RESERVED":
                return "空闲(已在VPC保留,未被使用)"
            elif range_info["status"] == "IN_USE":
                return "被非GKE资源占用"
    
    return "该CIDR不在指定VPC的辅助IP范围列表中"

额外说明

  • 依赖安装:执行pip install google-cloud-container google-cloud-compute安装客户端库
  • 认证配置:通过设置GOOGLE_APPLICATION_CREDENTIALS环境变量,指向服务账号密钥文件完成身份认证
  • 跨区域场景:如果你的GKE集群分布在多个区域,需要遍历所有目标区域执行上述检查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:42:15