首页 > 解决方案 > Kubernetes 和故障转移服务

问题描述

我有下一种情况,我不确定是否可以仅使用 kubernetes 来实现。

有两个 Pod,一个在 givemedata.example.com 上提供实时服务,一个在 givemedata2.example.com 上提供临时服务。临时的没有任何依赖关系,只是为了让一些长期的工作继续运行,而真正的工作因维护而停机。

集群在 GKE 上。

我需要设置故障转移,以便如果实时故障转移进行维护,故障转移应将呼叫重定向到临时呼叫。

主要原因是只使用一个端点,例如 givemedata.example.com。

我的问题是这是否可能以及如何做到这一点?

标签: kubernetesload-balancingfailover

解决方案


您可以安装NGINX 入口控制器。向入口配置文件添加 nginx.ingress.kubernetes.io/server-snippet:注释并添加代码块,该代码块将检查域是否可用,如果不可用,它将流量重定向到另一个。

由于这个注释,可以在服务器配置块中添加自定义配置。

阅读更多:服务器片段

请记住将此服务器添加到/etc/nginx目录中的nginx.conf文件中。这是示例配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: my-ingress
 namespace: ingress-nginx
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/add-base-url : "true"
   nginx.ingress.kubernetes.io/configuration-snippet: |
      set $agentflag 0;  
      if ($http_user_agent ~* "(Mobile)" ){  
      set $agentflag 1;  
      }  
      if ( $agentflag = 1 ) {  
      return 301 https://givemedata2.example.com;  
      }
spec:
 rules:
 - host: givemedata.example.com
   http:
     paths:
     - path: /
       backend:
         serviceName: service-name
         servicePort: service-port

推荐阅读