在Google Cloud Platform上向Kubernetes Load Balancer分配慢速静态IP

时间:2016-01-21 13:06:51

标签: networking ip-address load-balancing google-cloud-platform kubernetes

使用以下规范创建Kubernetes负载均衡器服务时:

{
    "apiVersion": "v1",
    "kind": "Service",
    "metadata": {
        "name": "a1"
    },
    "spec": {
        "selector": {
            "app": "a1"
        },
        "ports": [
            {
                "port": 80,
                "targetPort": 80,
                "name": "http"
            },
            {
                "port": 443,
                "targetPort": 443,
                "name": "https"
            }
        ],
        "type": "LoadBalancer"
    }
}

我需要等待1到2分钟才能得到EXTERNAL_IP

我之前考虑过保留静态IP并在创建服务时分配它们:

{
    "apiVersion": "v1",
    "kind": "Service",
    "metadata": {
        "name": "a1"
    },
    "spec": {
        "selector": {
            "app": "a1"
        },
        "ports": [
            {
                "port": 80,
                "targetPort": 80,
                "name": "http"
            },
            {
                "port": 443,
                "targetPort": 443,
                "name": "https"
            }
        ],
        "type": "LoadBalancer",
        "loadBalancerIP": "130.211.64.237"
    }
}

但我有相同的延迟1 - 1.5分钟:

$ kubectl get svc
NAME             CLUSTER_IP       EXTERNAL_IP      PORT(S)          SELECTOR             AGE
a1               10.127.248.248   130.211.64.237   80/TCP,443/TCP   app=a1               1m

有谁知道为什么会出现这种延迟?如果有办法缩短它?

1 个答案:

答案 0 :(得分:2)

遗憾的是,延迟仅仅是由计算引擎API中的延迟引起的,用于创建负载均衡服务的组件,并且没有真正的方法可以避免它。

Kubernetes master在被指示创建负载均衡器时,必须创建静态IP地址,目标池,转发规则和防火墙规则。这些资源可能需要一些时间才能完全初始化并准备好使用,因此现在需要等待一两分钟。