使用以下规范创建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
有谁知道为什么会出现这种延迟?如果有办法缩短它?
答案 0 :(得分:2)
遗憾的是,延迟仅仅是由计算引擎API中的延迟引起的,用于创建负载均衡服务的组件,并且没有真正的方法可以避免它。
Kubernetes master在被指示创建负载均衡器时,必须创建静态IP地址,目标池,转发规则和防火墙规则。这些资源可能需要一些时间才能完全初始化并准备好使用,因此现在需要等待一两分钟。