注释cloud.google.com/neg: '{"ingress": true}'
是 for ClusterIP
,而不是 for NodePort
,这意味着所述服务将以两种方式公开:
在幕后将创建一个独立ClusterIP
的,只能从同一子网中的其他 pod 访问10.7.165.27
将在所有 GKE 节点中在您的 GKE 节点子网iptables
的端口中创建转发规则30891/tcp
在您当前的情况下,注释将被接受但不会对其做任何事情,即使您ClusterIP
在幕后创建(点“1”)也不会生效,因为它不是原来的样子专为。
话虽如此,您在这里有多个路径。
a)您可以保留它,并直接在 port 与您的 GKE 节点通信30891/tcp
,我只会将此作为最后的手段,因为我个人不喜欢处理随机(或手动)选择的端口,从长远来看可能会影响处理。
b)您也可以直接与您的 GKE pod IP 地址通信(假设没有 GCP 防火墙规则阻止连接),我也不会使用它,因为 GKE pod IP 可能会在任何给定时间更改,因此跟踪它需要一些手动工作,如果您有多个提供相同服务的 Pod,您也不会有任何“平衡”。
c) 您可以实现以下 ClusterIP yaml 文件,而不是当前的:
apiVersion: "v1"
kind: "Service"
metadata:
name: "sura-service"
annotations:
cloud.google.com/neg: '{"exposed_ports": {"80":{}}}'
namespace: "sura"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
selector:
app: "sura"
type: "ClusterIP"
这将创建一个 NEG,您需要将您的连接指向将要创建的 GCP NEG 内部 IP,如果您出于任何原因需要使用 GCP NEG,我会亲自使用它。
d) 如果您不需要像这样使用 NEG,您还可以部署内部 TCP 负载均衡器:
apiVersion: "v1"
kind: "Service"
metadata:
name: "sura-l4"
namespace: "sura"
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
selector:
app: "sura"
type: "LoadBalancer"
loadBalancerIP: ""
根据您要实现的目标,您可以将其与 NEG 和/或 Global Access 结合使用。