在 GKE 上重新创建服务时如何避免重新创建入口?

时间:2021-01-12 10:21:58

标签: google-cloud-platform google-kubernetes-engine kubernetes-ingress

当我删除服务并重新创建时,我注意到入口的状态指示 Some backend services are in UNKNOWN state
经过一些试验和错误,它似乎与网络端点组(NEG)的名称有关。与新服务绑定的 NEG 具有不同的名称,但入口使用旧的 NEG 作为后端服务。 然后,我发现在我重新创建一个 Ingress 后它们又可以工作了。
我想尽可能避免停机以重新创建入口。
有没有办法在重新创建服务时避免重新创建入口?

我的服务

apiVersion: v1
kind: Service
metadata:
  name: client-service
  labels:
    app: client
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: client

我的入口

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: static-ip-name
    networking.gke.io/managed-certificates: managed-certificate
spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: client-service
              servicePort: 80

1 个答案:

答案 0 :(得分:0)

如果您想在服务消失时重新使用入口,您可以编辑其配置,而不是删除并重新创建它。

要重新配置 Ingress,您必须通过编辑配置来更新它,如 official Kubernetes documentation 中指定的那样。 为此,您可以执行以下步骤:

  1. 发出命令kubectl edit ingress test
  2. 执行必要的更改,例如更新服务配置
  3. 保存更改
  4. kubectl 将更新资源,并触发负载均衡器的更新。
  5. 通过执行命令 kubectl describe ingress test
  6. 验证更改