[英]GKE ingress multi path base routing
需要帮助在 GKE ingress(不是 nginx)中创建多路径基础路由。 我有一个主机指向 GKE 入口,它在单个后端上工作正常,现在我尝试用不同的路径 (/app1) 和服务名称更新另一个后端,但它给出错误“无法获取/app1”。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
kubernetes.io/ingress.global-static-ip-name: "ingress"
spec:
rules:
- host: "mydomain.com"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: my-app
port:
number: 8080
- path: /app1
pathType: ImplementationSpecific
backend:
service:
name: app1
port:
number: 8080
访问/app1
时出现 404 错误
这个问题有以下三种可能:
1 . 检查容器端口是否打开。 你可以使用 .netstat 检查它:
$ kubectl exec -ti <hostname> -c container -- bin/sh /
/ # netstat -plnt
2.问题也可能是由防火墙配置引起的。 确保您有正确的防火墙设置。
3.另一个原因可能是端口、容器端口和目标端口之间配置错误。 验证您是否设置了正确的端口、目标端口和服务端口。
GCP Ingress支持多路径。 我已经使用 Hello-world v1 和 v2 使用 Ingress 设置 HTTPS(S) 负载平衡测试了基于入口多路径的路由。
这是我部署的配置文件。
第一个部署配置文件:
$纳米部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: firstdeployment
labels:
app: api
spec:
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: container
image: gcr.io/google-samples/hello-app:1.0
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: first-service
labels:
app: api
spec:
type: NodePort
selector:
app: api
ports:
- port: 5000
targetPort: 8080
第二个部署配置文件:
$纳秒.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: second-deployment
labels:
app: api-2
spec:
selector:
matchLabels:
app: api-2
template:
metadata:
labels:
app: api-2
spec:
containers:
- name: container
image: gcr.io/google-samples/hello-app:2.0
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: second-service
labels:
app: api-2
spec:
type: NodePort
selector:
app: api-2
ports:
- port: 6000
targetPort: 8080
入口资源配置文件:
Ingress 是一种 Kube.netes 资源,它封装了一组规则和配置,用于将外部 HTTP(S) 流量路由到内部服务。
$ nano Ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: first-service
port:
number: 5000
- path: /app1
pathType: Prefix
backend:
Service:
name: second-service
port:
number: 6000
现在,通过运行以下命令找出为您的应用程序提供服务的负载均衡器的外部 IP 地址:
$ kubectl get ingress <ingress-name>
注意:您可以通过在 Ingress 清单中提供 defaultBackend 字段来指定默认后端。 任何与规则字段中的路径不匹配的请求都将发送到 defaultBackend 字段中指定的服务和端口。 例如,在上面的 Ingress 中,任何不匹配 / 或 /app1 的请求都会发送到端口 5001 上名为 first-service 的服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.