常规情况下,Kubernetes中维护Ingress资源,用于将请求路由到适当的Service。AWS Load Balancer Controller允许用户通过创建一个注释为 'service.beta.kubernetes.io/aws-load-balancer-type: nlb' 的Service来使用Network Load Balancer,但是当其中一个后端出现故障时,负载均衡器会尝试为客户端提供“503”响应。然而,有时用户想要更加细致地控制503响应的内容,以提供更好的用户体验。以下是一种方法,可以基于Kubernetes Ingress来实现自定义的503响应。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
ingress.kubernetes.io/force-ssl-redirect: 'true'
# Ingress使用NLB时统一配置AWS LoadBalancer Controller
# service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http"
service.beta.kubernetes.io/aws-load-balancer-type: nlb
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
spec:
rules:
- host: foo.example.com
http:
paths:
- path: /bar
backend:
serviceName: barService
servicePort: 80
- host: baz.example.com
http:
paths:
- path: /foo
backend:
serviceName: fooService
servicePort: 80
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/aws/deploy.yaml
apiVersion: