首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HAProxy入侵控制器服务在GCP上更改IP

HAProxy入侵控制器服务在GCP上更改IP
EN

Stack Overflow用户
提问于 2021-05-15 23:14:43
回答 2查看 502关注 0票数 0

我使用HAProxy作为我的GKE集群中的入口控制器。并将HAProxy服务公开为LoadBalancer服务(内部)。

最近,我遇到了一个问题,在这个问题上,HA代理服务改变了它的外部IP,流量停止了到HAProxy的路由。这个问题在不同的日子里发生过多次(现在已经停止了)。我必须手动将新的外部IP添加到负载均衡器的前端,以允许通信到HAProxy。

有两个吊舱在运行HAProxy,它们都运行了好几天,日志中什么也没有。我猜想这是与服务或GCP LB有关的东西,而不是HAProxy本身。

恐怕我没有任何与此有关的日志。

我还是不知道是什么原因导致了服务IP的改变。由于没有最近的变化,集群和所有服务都正常运行了很多天,突然发生了这种情况。

以前有没有人遇到过类似的问题?或者我能做些什么来避免这样的问题呢?

是什么导致了IP的改变?

以下是配置我的服务的方式:

代码语言:javascript
复制
---
apiVersion: v1
kind: Service
metadata:
  labels:
    run: haproxy-ingress
  name: haproxy-ingress
  namespace: haproxy-controller
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    networking.gke.io/internal-load-balancer-allow-global-access: "true"
    cloud.google.com/network-tier: "Premium"
spec:
  selector:
    run: haproxy-ingress
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  - name: stat
    port: 1024
    protocol: TCP
    targetPort: 1024

找到了一些原木:

代码语言:javascript
复制
Warning SyncLoadBalancerFailed 30m (x3570 over 13d) service-controller Error syncing load balancer: failed to ensure load balancer: googleapi: Error 409: IP_IN_USE_BY_ANOTHER_RESOURCE - IP '10.17.129.17' is already being used by another resource.
Normal EnsuringLoadBalancer 3m33s (x3576 over 13d) service-controller Ensuring load balancer
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-18 11:02:31

简单的回答是:服务的External IP是短暂的。

因为HA控制器吊舱是重新创建的,所以HA服务是用一个短暂的IP创建的。

为了避免这个问题,我建议使用可以在loadBalancerIP字段中引用的静态IP。

这可以通过以下步骤来完成:

  • 保留一个静态IP。(链接)
  • 使用此IP创建服务(链接)

例YAML:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  selector:
    app: hello
    tier: web
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer
  loadBalancerIP: "YOUR.IP.ADDRESS.HERE"
票数 1
EN

Stack Overflow用户

发布于 2021-05-16 00:48:12

不幸的是,如果没有日志,就很难确定。您应该检查GKE提供给云日志的审计日志,因为这可能会让您了解发生了什么。一种选择是GCP“oops”(Oops),GLB和GKE重新创建了它,从而给了它一个新的IP。不过,我从未听说过LBs会出现这种情况(这种情况经常发生在节点上,而不是LBs)。更常见的情况是,您运行了一些kubectl命令,该命令无意中删除了Service,然后由您设置的管理层(Argo、Flux、Helm运算符等)重新创建了它,但delete+recreate再次表示它是一个新的LB带新IP。审计日志中应该可以看到后一种情况,因此可以肯定地检查它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67551961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档