嗨,我目前正在尝试使用Google kubernetes引擎部署我的应用程序。我将前端和后端服务公开为NodePort,创建了一个名为“ ip”的全局静态IP地址。我创建了一个入口资源。 在添加路径规则之前,入口资源工作正常。
这是我的入口资源
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: ip
labels:
app: myapp
part: ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: backapp
servicePort: 9000
- path: /front/*
backend:
serviceName: frontapp
servicePort: 3000
这是我的服务 返回:
apiVersion:v1 种类:服务 元数据:
labels:
app: myapp
part: back
name: backapp
namespace: default
spec:
clusterIP: 10.*.*.*
externalTrafficPolicy: Cluster
ports:
- nodePort: 30646
port: 9000
protocol: TCP
targetPort: 9000
selector:
app: myapp
part: back
sessionAffinity: None
type: NodePort
前:
apiVersion: v1
kind: Service
metadata:
labels:
app: myapp
part: front
name: frontapp
namespace: default
spec:
clusterIP: 10.*.*.*
externalTrafficPolicy: Cluster
ports:
- nodePort: 31609
port: 3000
protocol: TCP
targetPort: 3000
selector:
app: myapp
part: front
sessionAffinity: None
type: NodePort
每次我尝试去 http://external-ingress-ip/front
http://external-ingress-ip/front/home
我只得到default backend - 404
所以我的问题是:我的配置有什么问题,添加路径时发生了什么变化?
答案 0 :(得分:0)
Kubernetes NodePort服务是将外部流量直接获取到您的服务的最基本方法。
顾名思义,NodePort会在所有节点(VM)上打开特定端口, 发送到该端口并转发到服务。
返回您的问题。 尝试使用该配置。它更加清晰,仅包含必需的选项。
请记住,两种服务的ingress.global-static-ip-name
和targetPort
与您Pods端口的值相同。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: $IP # Reserved IP address
labels:
app: myapp
part: ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: backapp
servicePort: 9000
- path: /front/*
backend:
serviceName: frontapp
servicePort: 3000`
此外,还需要定义单独的服务来处理传入流量:
apiVersion: v1
kind: Service
metadata:
labels:
app: myapp
part: back
name: backapp
namespace: default
spec:
ports:
- port: 9000
protocol: TCP
targetPort: 9000 # Port on the pod with 'back' application
selector:
app: myapp
part: back
type: NodePort
以及前端服务的第二种配置:
apiVersion: v1
kind: Service
metadata:
labels:
app: myapp
part: front
name: frontapp
namespace: default
spec:
ports:
- port: 3000
protocol: TCP
targetPort: 3000 # Port on the pod with 'front' application
selector:
app: myapp
part: front
type: NodePort
如果新配置不能正常运行,请写上详细说明。
(我要对Anton Kostenko表示感谢,谢谢您的帮助,并使配置文件能够正常工作)