Networking 无法访问GCP别名IP

Networking 无法访问GCP别名IP,networking,google-cloud-platform,google-kubernetes-engine,google-vpc,Networking,Google Cloud Platform,Google Kubernetes Engine,Google Vpc,我的别名IP范围是10.7.0.0/16 为VPC本机群集配置了辅助范围,因此我的播客/服务可以具有别名IP范围 ❯ k get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hasura-service NodePort 10.7.165.27 <none> 80:30891/TCP 2d21h 在GKE中,有一个服务使用别名IP范围 ❯

我的别名IP范围是
10.7.0.0/16

为VPC本机群集配置了辅助范围,因此我的播客/服务可以具有别名IP范围

❯ k get svc
NAME             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
hasura-service   NodePort   10.7.165.27   <none>        80:30891/TCP   2d21h
在GKE中,有一个服务使用别名IP范围

❯ k get svc
NAME             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
hasura-service   NodePort   10.7.165.27   <none>        80:30891/TCP   2d21h
项目中的其他实例无法与
10.7.165.27:80
通信,这些实例位于同一子网
10.152.0.0/20


我是否需要配置其他任何东西才能使用VPC本身的别名范围的connect?

注释
cloud.google.com/neg:“{”ingres:true}”
用于
ClusterIP
,而不是
NodePort
,这意味着所述服务将以两种方式公开:

  • 幕后将创建一个独立的
    ClusterIP
    ,它只能从位于
    10.7.165.27的同一子网中的其他pod访问

  • 将在GKE节点子网的端口
    30891/tcp
    中的所有GKE节点之间创建转发规则
    iptables

  • 在您当前的情况下,注释将被接受,但不会对其做任何事情,即使您在幕后创建
    ClusterIP
    (点“1”),也不会生效,因为它不是设计的方式

    也就是说,这里有多条路径

    a) 您可以不必担心,直接在端口
    30891/tcp
    上与GKE节点通信,我只能将此作为最后手段,因为我个人不喜欢处理随机(或手动)选择的端口,从长远来看,这可能会影响处理

    b) 您还可以直接与您的GKE pod IP地址通信(假设没有GCP防火墙规则阻止连接),我也不会使用它,因为GKE pod IP可以在任何给定时间更改,因此跟踪它需要一些手动操作,而且您也不会有任何“平衡”如果您有多个吊舱提供相同的服务

    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) 如果您不需要像这样使用NEGs,也可以部署内部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: ""
    
    根据您试图实现的目标,您可以将其与NEGs和/或全局访问相结合

    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sura-service
      namespace: sura
      annotations:
        cloud.google.com/neg: '{"ingress": true}'
    spec:
      selector:
        app: sura
      ports:
      - protocol: "TCP"
        port: 80
        targetPort: 8080
      type: ClusterIP
    
    这将创建一个仍无法从VPC访问的具有辅助别名范围的服务

    创建具有仅代理子网的内部负载平衡器-

    这是数据包流


    VPC本机集群的目标是避免节点端口通信和K8S的负载均衡器,但直接到达pod以获得更好的网络性能。我不是K8S方面的专家,但这个问题似乎很正常!!使用neg暴露端口进行服务后仍然无法访问。您的GKE服务列表上报告的IP地址仅为内部(GKE pods),但当您部署此服务时,将创建一个GCP neg,表示neg将具有其他子网可访问的不同IP地址,请注意,如果您使用
    cloud.google.com/neg:'{“ingres”:true}
    ,所述NEG仅在您部署使用所述
    集群IP的
    Ingress
    时创建。因此,您对LB的使用是否良好?内部IP很好,我感谢您的回复,NEG速度很快。
    ---
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: sura-ingress
      namespace: sura
      annotations:
        kubernetes.io/ingress.class: "gce-internal"
    spec:
      backend:
        serviceName: sura-service
        servicePort: 80