无法将静态 IP 连接到 GKE 上的 Ingress

Mik*_*ike 7 static-ip-address google-cloud-platform kubernetes-ingress nginx-ingress

我正在尝试将我的入口连接到静态 IP。我似乎正在遵循所有教程,但似乎仍然无法将我的静态 ip 附加到入口。我的ingress文件如下(参考静态ip“test-ip”)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-web
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "test-ip"
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/add-base-url: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
    - http:
        paths:
          - path: /api/
            backend:
              serviceName: api-cluster-ip-service
              servicePort: 5005
          - path: /
            backend:
              serviceName: web-cluster-ip-service
              servicePort: 80
Run Code Online (Sandbox Code Playgroud)

然而,当我跑

kubectl get ingress ingress-web
Run Code Online (Sandbox Code Playgroud)

它返回

kubectl get ingress ingress-web
NAME          HOSTS     ADDRESS   PORTS     AGE
ingress-web   *                   80        4m
Run Code Online (Sandbox Code Playgroud)

不给地址。在 VPC 网络中 [外部 IP 地址] 静态 ip 在那里,它是全局的,但它一直说:In use by None

 gcloud compute addresses describe test-ip --global
Run Code Online (Sandbox Code Playgroud)

address: 34.240.xx.xxx
creationTimestamp: '2019-03-26T00:34:26.086-07:00'
description: ''
id: '536303927960423409'
kind: compute#address
name: test-ip
networkTier: PREMIUM
selfLink: https://www.googleapis.com/compute/v1/projects/my-project- adbc8/global/addresses/test-ip
status: RESERVED
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

Aar*_*oir 21

我遇到了这个问题。我相信这个拉取请求已修复它。

改变

kubernetes.io/ingress.global-static-ip-name

kubernetes.io/ingress.regional-static-ip-name

为我工作。

  • 更正:我也尝试过区域,但仍然不起作用,但删除区域IP并创建全局IP使其可以通过。我猜 GKE HTTPS 入口与区域 IP 不兼容? (10认同)
  • 我也是@patricknelson。我尝试使用区域 IP,但似乎不适用于 GKE 本机入口,因此我必须使用全局 IP 重新创建静态 IP。 (2认同)

Ant*_*ton 6

我花了几个小时试图弄清楚这个问题。这似乎只是 GKE 的一个错误。

解决它的是:

  1. 在没有静态 ip 的情况下启动入口
  2. 转到 VPC 网络 > 外部 IP 地址下的 Web 上的云控制台
  3. 等待 Ingress ip 出现
  4. 设置是静态的,并给它一个名字
  5. 添加kubernetes.io/ingress.global-static-ip-name: <ip name>Ingress yaml 并运行apply它。


iji*_*iji 5

您必须确保在 GCP 中创建的 IP 是全局 IP,而不是区域 IP,才能在入口中使用以下注释:

kubernetes.io/ingress.global-static-ip-name
Run Code Online (Sandbox Code Playgroud)