我在Google Kubernetes引擎上配置Ingress。我是Ingress的新手,但据我了解,Ingress可以服务于不同的负载均衡器,因此不同的LB应该配置不同。
我已经从GKE上的简单入口配置开始了:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: basic-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: web-np
servicePort: 8080
- path: /v2/keys
backend:
serviceName: etcd-np
servicePort: 2379
并且运行良好,所以我有2个不同的NodePort服务web-np和etcd-np
。但是,现在我需要使用一些重写规则来扩展此逻辑,以便将指向/service1
的请求重定向到其他service1-np
服务,但必须将/service1/hello.html
替换为/hello.html
。这就是为什么我有以下问题:
kubernetes.io/ingress.global-static-ip-name
注释在Google示例中广泛使用。
Ingress
-管理对群集中服务的外部访问的API对象,通常是HTTP。Ingress可以提供负载平衡,SSL终止和基于名称的虚拟主机。
Kubernetes可以具有多个Ingress
控制器。该控制器彼此不同。您在此特定问题中提到的Ingress
控制器是:
Ingress-GCE
-Ingress
群集的默认GKE
资源:Ingress-nginx
-可以部署到Ingress
集群的备用GKE
控制器:Ingress-GCE
控制器。如果要切换到Ingress-nginx
,则需要部署它并设置如下注释:kubernetes.io/ingress.class: "nginx"
如何配置入站重写,以及是否可以使用默认的负载均衡器。
这里有一个正在进行的功能请求,以支持用Ingress-GCE
进行重写:Github.com: Ingress-GCE: Rewrite。
您可以使用Ingress-nginx
来支持重写。有有关部署它的官方文档:Kubernetes.github.io: Ingress-nginx: Deploy
什么是GKE上的默认负载均衡器。
如果使用默认的Ingress
选项创建Ingress-GCE
资源,则将创建L7 HTTP&HTTPS LoadBalancer。
如果在LoadBalancer
中创建类型为GKE
的服务,则将创建L4 Network Load Balancer
如果在Ingress-nginx
集群中部署GKE
控制器,则将创建一个指向Ingress-nginx
控制器的L4网络负载均衡器,此控制器随后会将流量路由到Ingress
定义。如果您愿意使用Ingress-nginx
,则需要指定:
kubernetes.io/ingress.class: "nginx"
Ingress
定义中。 请看这篇文章:Medium.com: Google Cloud: Kubernetes Nodeport vs Loadbalancer vs Ingress
我在哪里可以找到所有注释的列表。我以为完整列表在https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/上,但是有一个完全不同的列表,并且没有在Google示例中广泛使用的kubernetes.io/ingress.global-static-ip-name批注。
您提供的带有注释的链接专门用于Ingress-nginx
。此注释不适用于Ingress-GCE
。
GCP
示例中使用的注释特定于Ingress-GCE
。 您可以为Ingress-GCE
上的Issuetracker.google.com的可用注释列表创建功能请求。