问题描述
我一直在使用 minikube 和这个 yml 文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
Metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: Nginx
Nginx.ingress.kubernetes.io/use-regex: "true"
Nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
pathType: Prefix
backend:
service:
name: client-cluster-ip
port:
number: 3000
- path: /api/?(.*)
pathType: Prefix
backend:
service:
name: server-cluster-ip
port:
number: 5000
我已经在我的 GKE 集群上安装了 helm 并按照他们的指示通过 helm 安装了 ingress-Nginx here.
我 kubectl 应用了我的 k8s,除了上面文件中的入口服务之外,它们都启动了。
非常感谢任何帮助。
我已经试过了:
apiVersion: extensions/v1beta1
kind: Ingress
Metadata:
name: ingress-service
namespace: my-ingress-Nginx
annotations:
kubernetes.io/ingress.class: Nginx
Nginx.ingress.kubernetes.io/use-regex: "true"
Nginx.ingress.kubernetes.io/ssl-redirect: "false"
Nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: client-cluster-ip
servicePort: 3000
- path: /api/*
backend:
serviceName: server-cluster-ip
servicePort: 5000
我真的被困在这里了。没有看到 ingress-service 像我在 minikube 中那样出现,我不知道为什么。
服务器集群IP:
apiVersion: v1
kind: Service
Metadata:
name: server-cluster-ip
spec:
type: ClusterIP
selector:
component: server
ports:
- port: 5000
targetPort: 5000
客户端集群IP:
apiVersion: v1
kind: Service
Metadata:
name: client-cluster-ip
spec:
type: ClusterIP
selector:
component: web
ports:
- port: 3000
targetPort: 3000
上面的部署和 clusterIp 服务正在应用于集群,但用于将流量定向到它们的入口服务不是。
服务:
NAME TYPE
client-cluster-ip ClusterIP
kubernetes ClusterIP
my-ingress-Nginx-controller LoadBalancer
my-ingress-Nginx-controller-admission ClusterIP
postgres-cluster-ip ClusterIP
redis-cluster-ip ClusterIP
server-cluster-ip ClusterIP
my-ingress-Nginx-controller 和 my-ingress-Nginx-controller-admission 是在我执行 helm install my-ingress-Nginx ingress-Nginx/ingress-Nginx
时创建的
为什么我不能创建入口服务?
解决方法
我意识到我需要从 documentation 打开端口 8443。
所以我去了谷歌云中的firewall list。在协议/端口中找到具有 tcp:80,443 的规则。单击它,单击编辑并添加 8443。
之后我遇到了一个错误,但这修复了它:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: client-cluster-ip
servicePort: 3000
- path: /api/?(.*)
backend:
serviceName: server-cluster-ip
servicePort: 5000
注意我将 * 更改为 ?(.*)